From 91787e1a34f86fb2dfe3df4b3edeb546ef460542 Mon Sep 17 00:00:00 2001 From: Christopher Seeley Date: Wed, 5 Jul 2017 16:54:10 -0400 Subject: [PATCH] Commit v21.2.0 to github --- adwords/AdWords.sln => AdWords.sln | 0 adwords/ChangeLog => ChangeLog | 0 dfp/Dfp.sln => Dfp.sln | 0 adwords/LICENSE => LICENSE | 0 adwords/README.md => README.md | 0 dfp/ChangeLog | 915 ------------------ dfp/LICENSE | 201 ---- dfp/README.md | 212 ---- dfp/lib/BouncyCastle/BouncyCastle.Crypto.dll | Bin 1425408 -> 0 bytes dfp/lib/BouncyCastle/license.txt | 7 - dfp/lib/NUnit/license.txt | 15 - dfp/lib/NUnit/nunit.framework.dll | Bin 151552 -> 0 bytes dfp/src/Common/AdsApi.snk | Bin 596 -> 0 bytes dfp/src/Common/Common.csproj | 130 --- .../Common/CommonErrorMessages.Designer.cs | 297 ------ dfp/src/Common/CommonErrorMessages.resx | 223 ----- dfp/src/Common/Lib/AdsClient.cs | 180 ---- dfp/src/Common/Lib/AdsException.cs | 72 -- dfp/src/Common/Lib/AdsOAuthException.cs | 63 -- dfp/src/Common/Lib/AdsOAuthProvider.cs | 118 --- .../Lib/AdsOAuthProviderForApplications.cs | 67 -- .../Lib/AdsOAuthProviderForServiceAccounts.cs | 39 - dfp/src/Common/Lib/AdsService.cs | 31 - dfp/src/Common/Lib/AdsSoapClient.cs | 342 ------- dfp/src/Common/Lib/AdsUser.cs | 335 ------- dfp/src/Common/Lib/AppConfig.cs | 170 ---- dfp/src/Common/Lib/AppConfigBase.cs | 759 --------------- dfp/src/Common/Lib/Configurable.cs | 27 - dfp/src/Common/Lib/ContextStore.cs | 68 -- dfp/src/Common/Lib/ErrorHandler.cs | 98 -- dfp/src/Common/Lib/OAuth2JwtClaimset.cs | 76 -- .../Common/Lib/OAuth2JwtClaimsetBuilder.cs | 129 --- dfp/src/Common/Lib/OAuth2ProviderBase.cs | 468 --------- .../Lib/OAuth2ProviderForApplications.cs | 273 ------ .../Lib/OAuth2ProviderForServiceAccounts.cs | 152 --- dfp/src/Common/Lib/ServiceFactory.cs | 72 -- dfp/src/Common/Lib/ServiceSignature.cs | 111 --- dfp/src/Common/Lib/SoapHeaderBase.cs | 142 --- .../Common/Logging/AdsFeatureUsageRegistry.cs | 158 --- .../Common/Logging/DefaultBodyFormatter.cs | 45 - dfp/src/Common/Logging/JsonBodyFormatter.cs | 64 -- .../Logging/KeyValueMessageFormatter.cs | 52 - dfp/src/Common/Logging/LogEntry.cs | 364 ------- dfp/src/Common/Logging/RequestInfo.cs | 110 --- dfp/src/Common/Logging/ResponseInfo.cs | 73 -- dfp/src/Common/Logging/SoapListener.cs | 43 - .../Common/Logging/SoapListenerExtension.cs | 167 ---- .../Logging/SoapListenerExtensionAttribute.cs | 51 - .../Common/Logging/SoapMessageDirection.cs | 31 - dfp/src/Common/Logging/SoapTraceFormatter.cs | 56 -- dfp/src/Common/Logging/TraceFormatter.cs | 38 - dfp/src/Common/Logging/TraceListener.cs | 157 --- .../Common/Logging/UrlEncodedBodyFormatter.cs | 52 - dfp/src/Common/Properties/AssemblyInfo.cs | 35 - dfp/src/Common/Properties/Properties.cs | 21 - dfp/src/Common/Util/CollectionUtilities.cs | 50 - dfp/src/Common/Util/CsvException.cs | 62 -- dfp/src/Common/Util/CsvFile.cs | 255 ----- dfp/src/Common/Util/DateTimeProvider.cs | 34 - .../Common/Util/DefaultDateTimeProvider.cs | 36 - dfp/src/Common/Util/DeprecationUtilities.cs | 51 - dfp/src/Common/Util/HttpUtilities.cs | 153 --- dfp/src/Common/Util/MediaUtilities.cs | 200 ---- dfp/src/Common/Util/PreconditionUtilities.cs | 71 -- .../Common/Util/Reports/AdsReportUtilities.cs | 165 ---- dfp/src/Common/Util/Reports/ReportResponse.cs | 260 ----- .../Common/Util/Reports/ReportsException.cs | 76 -- dfp/src/Common/Util/SerializationUtilities.cs | 179 ---- dfp/src/Common/Util/TemporaryIdGenerator.cs | 75 -- dfp/src/Common/Util/TraceUtilities.cs | 187 ---- dfp/src/Common/Util/XmlUtilities.cs | 64 -- dfp/tests/Common/Common.Tests.csproj | 120 --- dfp/tests/Common/HttpMessage.cs | 74 -- dfp/tests/Common/Lib/AdsExceptionTests.cs | 91 -- .../Common/Lib/AdsOAuthExceptionTests.cs | 89 -- dfp/tests/Common/Lib/AppConfigBaseTests.cs | 136 --- .../Common/Lib/OAuth2JwtClaimsetTests.cs | 61 -- .../Lib/OAuth2ProviderForApplicationsTests.cs | 315 ------ .../OAuth2ProviderForServiceAccountsTests.cs | 211 ---- dfp/tests/Common/Lib/ServiceFactoryTests.cs | 43 - dfp/tests/Common/Lib/ServiceSignatureTests.cs | 56 -- .../Logging/DefaultBodyFormatterTests.cs | 47 - .../Common/Logging/JsonBodyFormatterTests.cs | 64 -- .../Logging/KeyValueMessageFormatterTests.cs | 61 -- .../Common/Logging/SoapTraceFormatterTests.cs | 64 -- dfp/tests/Common/Logging/TraceHelperTests.cs | 186 ---- .../Common/Logging/TraceListenerTests.cs | 141 --- .../Logging/UrlEncodedBodyFormatterTests.cs | 71 -- dfp/tests/Common/MockWebRequest.cs | 297 ------ dfp/tests/Common/MockWebResponse.cs | 117 --- dfp/tests/Common/Mocks/MockAdsClient.cs | 222 ----- dfp/tests/Common/Mocks/MockAdsException.cs | 95 -- dfp/tests/Common/Mocks/MockAdsUser.cs | 53 - dfp/tests/Common/Mocks/MockAppConfig.cs | 86 -- .../Common/Mocks/MockDateTimeProvider.cs | 35 - dfp/tests/Common/Mocks/MockServiceFactory.cs | 57 -- .../Common/Mocks/MockServiceSignature.cs | 45 - dfp/tests/Common/Mocks/MockTraceListener.cs | 45 - dfp/tests/Common/OAuth2RequestInterceptor.cs | 159 --- dfp/tests/Common/Resources.Designer.cs | 177 ---- dfp/tests/Common/Resources.resx | 361 ------- dfp/tests/Common/Resources/certificate.p12 | Bin 1668 -> 0 bytes dfp/tests/Common/Resources/secret.json | 12 - dfp/tests/Common/Resources/utf8bom.xml | 2 - dfp/tests/Common/StubIntegrityTestHelper.cs | 117 --- dfp/tests/Common/TestUtils.cs | 48 - .../Common/Util/CollectionUtilitiesTest.cs | 64 -- dfp/tests/Common/Util/CsvFileTests.cs | 70 -- .../Common/Util/DeprecationUtilitiesTest.cs | 92 -- dfp/tests/Common/Util/MediaUtilitiesTests.cs | 136 --- .../Util/Reports/ReportResponseTests.cs | 165 ---- .../Common/Util/TemporaryIdGeneratorTests.cs | 83 -- dfp/tests/Common/Util/TraceUtilitiesTest.cs | 166 ---- dfp/tests/Common/Util/XmlUtilitiesTest.cs | 82 -- dfp/tests/Common/WebRequestInterceptor.cs | 138 --- .../OAuthTokenGenerator/LocalWebServer.cs | 218 ----- .../OAuthTokenGenerator/MainForm.Designer.cs | 193 ---- dfp/utilities/OAuthTokenGenerator/MainForm.cs | 147 --- .../OAuthTokenGenerator/MainForm.resx | 126 --- .../OAuthTokenGenerator.csproj | 83 -- dfp/utilities/OAuthTokenGenerator/Program.cs | 36 - .../Properties/AssemblyInfo.cs | 36 - .../Properties/Properties.cs | 21 - .../ResultDialog.Designer.cs | 88 -- .../OAuthTokenGenerator/ResultDialog.cs | 40 - .../OAuthTokenGenerator/ResultDialog.resx | 120 --- .../CSharp/AdWords.Examples.CSharp.csproj | 0 .../AdWords/CSharp/App.config | 0 .../AdWords/CSharp/ExampleBase.cs | 0 .../AdWords/CSharp/ExampleUtilities.cs | 0 .../AdWords.Examples.CSharp.OAuth.csproj | 0 .../AdWords/CSharp/OAuth/ConsoleExample.cs | 0 .../AdWords/CSharp/OAuth/Default.aspx | 0 .../AdWords/CSharp/OAuth/Default.aspx.cs | 0 .../CSharp/OAuth/Default.aspx.designer.cs | 0 .../AdWords/CSharp/OAuth/OAuthLogin.aspx | 0 .../AdWords/CSharp/OAuth/OAuthLogin.aspx.cs | 0 .../CSharp/OAuth/OAuthLogin.aspx.designer.cs | 0 .../CSharp/OAuth/Properties/AssemblyInfo.cs | 0 .../CSharp/OAuth/Properties/Properties.cs | 0 .../AdWords/CSharp/OAuth/README.md | 0 .../AdWords/CSharp/OAuth/Web.config | 0 .../AdWords/CSharp/OAuth/css/main.css | 0 .../AdWords/CSharp/Program.cs | 0 .../AdWords/CSharp/Properties/AssemblyInfo.cs | 0 .../AdWords/CSharp/Properties/Properties.cs | 0 .../AccountManagement/AcceptServiceLink.cs | 0 .../AccountManagement/CreateAccount.cs | 0 .../AccountManagement/GetAccountChanges.cs | 0 .../AccountManagement/GetAccountHierarchy.cs | 0 .../AdvancedOperations/AddAdCustomizers.cs | 0 .../AddAdGroupBidModifier.cs | 0 .../AddClickToDownloadAd.cs | 0 .../AddExpandedTextAdWithUpgradedUrls.cs | 0 .../v201609/AdvancedOperations/AddHtml5Ad.cs | 0 .../AddResponsiveDisplayAd.cs | 0 .../AddUniversalAppCampaign.cs | 0 .../CreateAndAttachSharedKeywordSet.cs | 0 .../FindAndRemoveCriteriaFromSharedSet.cs | 0 .../GetAdGroupBidModifiers.cs | 0 .../UsePortfolioBiddingStrategy.cs | 0 .../AddAdGroupDemographicCriteria.cs | 0 .../v201609/BasicOperations/AddAdGroups.cs | 0 .../v201609/BasicOperations/AddCampaigns.cs | 0 .../BasicOperations/AddExpandedTextAds.cs | 0 .../v201609/BasicOperations/AddKeywords.cs | 0 .../v201609/BasicOperations/GetAdGroups.cs | 0 .../v201609/BasicOperations/GetCampaigns.cs | 0 .../BasicOperations/GetCampaignsWithAwql.cs | 0 .../BasicOperations/GetExpandedTextAds.cs | 0 .../v201609/BasicOperations/GetKeywords.cs | 0 .../v201609/BasicOperations/GetTextAds.cs | 0 .../CSharp/v201609/BasicOperations/PauseAd.cs | 0 .../v201609/BasicOperations/RemoveAd.cs | 0 .../v201609/BasicOperations/RemoveAdGroup.cs | 0 .../v201609/BasicOperations/RemoveCampaign.cs | 0 .../v201609/BasicOperations/RemoveKeyword.cs | 0 .../v201609/BasicOperations/UpdateAdGroup.cs | 0 .../v201609/BasicOperations/UpdateCampaign.cs | 0 .../v201609/BasicOperations/UpdateKeyword.cs | 0 .../CampaignManagement/AddCampaignLabels.cs | 0 .../AddCompleteCampaignsUsingBatchJob.cs | 0 ...CompleteCampaignsUsingStreamingBatchJob.cs | 0 .../v201609/CampaignManagement/AddDraft.cs | 0 .../AddKeywordsUsingIncrementalBatchJob.cs | 0 .../v201609/CampaignManagement/AddTrial.cs | 0 .../GetAllDisapprovedAds.cs | 0 .../GetAllDisapprovedAdsWihAwql.cs | 0 .../CampaignManagement/GetCampaignsByLabel.cs | 0 .../CampaignManagement/GraduateTrial.cs | 0 .../CampaignManagement/SetAdParameters.cs | 0 .../CampaignManagement/SetBidModifier.cs | 0 .../CampaignManagement/ValidateTextAd.cs | 0 .../ErrorHandling/HandlePartialFailures.cs | 0 .../HandlePolicyViolationError.cs | 0 .../ErrorHandling/HandleRateExceededError.cs | 0 .../AddGoogleMyBusinessLocationExtensions.cs | 0 .../CSharp/v201609/Extensions/AddPrices.cs | 0 .../CSharp/v201609/Extensions/AddSitelinks.cs | 0 .../Extensions/AddSitelinksUsingFeeds.cs | 0 .../Migration/MigrateToExtensionSettings.cs | 0 .../Miscellaneous/GetAllVideosAndImages.cs | 0 .../v201609/Miscellaneous/UploadImage.cs | 0 .../Miscellaneous/UploadMediaBundle.cs | 0 .../Optimization/EstimateKeywordTraffic.cs | 0 .../Optimization/GetAdGroupBidSimulations.cs | 0 ...CampaignCriterionBidModifierSimulations.cs | 0 .../Optimization/GetKeywordBidSimulations.cs | 0 .../v201609/Optimization/GetKeywordIdeas.cs | 0 .../CSharp/v201609/Remarketing/AddAudience.cs | 0 .../Remarketing/AddConversionTracker.cs | 0 .../Remarketing/AddCrmBasedUserList.cs | 0 .../AddRuleBasedRemarketingList.cs | 0 .../UploadOfflineCallConversions.cs | 0 .../Remarketing/UploadOfflineConversions.cs | 0 .../Reporting/DownloadCriteriaReport.cs | 0 .../DownloadCriteriaReportWithAwql.cs | 0 .../v201609/Reporting/GetReportFields.cs | 0 .../Reporting/ParallelReportDownload.cs | 0 .../Reporting/StreamCriteriaReportResults.cs | 0 .../Reporting/StreamCriteriaReportToPoco.cs | 0 .../StreamReportToPredefinedReportRowType.cs | 0 .../AddProductPartitionTree.cs | 0 .../ShoppingCampaigns/AddProductScope.cs | 0 .../ShoppingCampaigns/AddShoppingCampaign.cs | 0 .../GetProductCategoryTaxonomy.cs | 0 .../BudgetUtilizationReport.cs | 0 .../BudgetUtilizationReport/README.md | 0 .../GetNewKeywords/GetNewKeywords.cs | 0 .../Solutions/GetNewKeywords/README.md | 0 .../Targeting/AddCampaignTargetingCriteria.cs | 0 .../Targeting/GetCampaignTargetingCriteria.cs | 0 .../GetTargetableLanguagesAndCarriers.cs | 0 .../v201609/Targeting/LookupLocation.cs | 0 .../AccountManagement/AcceptServiceLink.cs | 0 .../AccountManagement/CreateAccount.cs | 0 .../AccountManagement/GetAccountChanges.cs | 0 .../AccountManagement/GetAccountHierarchy.cs | 0 .../AdvancedOperations/AddAdCustomizers.cs | 0 .../AddAdGroupBidModifier.cs | 0 .../AddClickToDownloadAd.cs | 0 .../AddExpandedTextAdWithUpgradedUrls.cs | 0 .../v201702/AdvancedOperations/AddHtml5Ad.cs | 0 .../AddResponsiveDisplayAd.cs | 0 .../AddUniversalAppCampaign.cs | 0 .../CreateAndAttachSharedKeywordSet.cs | 0 .../FindAndRemoveCriteriaFromSharedSet.cs | 0 .../GetAdGroupBidModifiers.cs | 0 .../UsePortfolioBiddingStrategy.cs | 0 .../AddAdGroupDemographicCriteria.cs | 0 .../v201702/BasicOperations/AddAdGroups.cs | 0 .../v201702/BasicOperations/AddCampaigns.cs | 0 .../BasicOperations/AddExpandedTextAds.cs | 0 .../v201702/BasicOperations/AddKeywords.cs | 0 .../v201702/BasicOperations/GetAdGroups.cs | 0 .../v201702/BasicOperations/GetCampaigns.cs | 0 .../BasicOperations/GetCampaignsWithAwql.cs | 0 .../BasicOperations/GetExpandedTextAds.cs | 0 .../v201702/BasicOperations/GetKeywords.cs | 0 .../v201702/BasicOperations/GetTextAds.cs | 0 .../CSharp/v201702/BasicOperations/PauseAd.cs | 0 .../v201702/BasicOperations/RemoveAd.cs | 0 .../v201702/BasicOperations/RemoveAdGroup.cs | 0 .../v201702/BasicOperations/RemoveCampaign.cs | 0 .../v201702/BasicOperations/RemoveKeyword.cs | 0 .../v201702/BasicOperations/UpdateAdGroup.cs | 0 .../v201702/BasicOperations/UpdateCampaign.cs | 0 .../v201702/BasicOperations/UpdateKeyword.cs | 0 .../CampaignManagement/AddCampaignLabels.cs | 0 .../AddCompleteCampaignsUsingBatchJob.cs | 0 ...CompleteCampaignsUsingStreamingBatchJob.cs | 0 .../v201702/CampaignManagement/AddDraft.cs | 0 .../AddKeywordsUsingIncrementalBatchJob.cs | 0 .../v201702/CampaignManagement/AddTrial.cs | 0 .../GetAllDisapprovedAds.cs | 0 .../GetAllDisapprovedAdsWihAwql.cs | 0 .../CampaignManagement/GetCampaignsByLabel.cs | 0 .../CampaignManagement/GraduateTrial.cs | 0 .../CampaignManagement/SetAdParameters.cs | 0 .../CampaignManagement/SetBidModifier.cs | 0 .../CampaignManagement/ValidateTextAd.cs | 0 .../ErrorHandling/HandlePartialFailures.cs | 0 .../HandlePolicyViolationError.cs | 0 .../ErrorHandling/HandleRateExceededError.cs | 0 .../AddGoogleMyBusinessLocationExtensions.cs | 0 .../CSharp/v201702/Extensions/AddPrices.cs | 0 .../CSharp/v201702/Extensions/AddSitelinks.cs | 0 .../Extensions/AddSitelinksUsingFeeds.cs | 0 .../Migration/MigrateToExtensionSettings.cs | 0 .../Miscellaneous/GetAllVideosAndImages.cs | 0 .../v201702/Miscellaneous/UploadImage.cs | 0 .../Miscellaneous/UploadMediaBundle.cs | 0 .../Optimization/EstimateKeywordTraffic.cs | 0 .../Optimization/GetAdGroupBidSimulations.cs | 0 ...CampaignCriterionBidModifierSimulations.cs | 0 .../Optimization/GetKeywordBidSimulations.cs | 0 .../v201702/Optimization/GetKeywordIdeas.cs | 0 .../CSharp/v201702/Remarketing/AddAudience.cs | 0 .../Remarketing/AddConversionTracker.cs | 0 .../Remarketing/AddCrmBasedUserList.cs | 0 .../AddRuleBasedRemarketingList.cs | 0 .../UploadOfflineCallConversions.cs | 0 .../Remarketing/UploadOfflineConversions.cs | 0 .../DownloadCriteriaReportWithAwql.cs | 0 .../DownloadCriteriaReportWithSelector.cs | 0 .../v201702/Reporting/GetReportFields.cs | 0 .../Reporting/ParallelReportDownload.cs | 0 .../Reporting/StreamCriteriaReportResults.cs | 0 .../Reporting/StreamCriteriaReportToPoco.cs | 0 .../StreamReportToPredefinedReportRowType.cs | 0 .../AddProductPartitionTree.cs | 0 .../ShoppingCampaigns/AddProductScope.cs | 0 .../ShoppingCampaigns/AddShoppingCampaign.cs | 0 .../AddShoppingCampaignForShowcaseAds.cs | 0 .../GetProductCategoryTaxonomy.cs | 0 .../BudgetUtilizationReport.cs | 0 .../BudgetUtilizationReport/README.md | 0 .../GetNewKeywords/GetNewKeywords.cs | 0 .../Solutions/GetNewKeywords/README.md | 0 .../Targeting/AddCampaignTargetingCriteria.cs | 0 .../Targeting/GetCampaignTargetingCriteria.cs | 0 .../GetTargetableLanguagesAndCarriers.cs | 0 .../v201702/Targeting/LookupLocation.cs | 0 .../AccountManagement/AcceptServiceLink.cs | 0 .../AccountManagement/CreateAccount.cs | 0 .../AccountManagement/GetAccountChanges.cs | 0 .../AccountManagement/GetAccountHierarchy.cs | 0 .../AdvancedOperations/AddAdCustomizers.cs | 0 .../AddAdGroupBidModifier.cs | 0 .../AddClickToDownloadAd.cs | 0 .../AdvancedOperations/AddDynamicPageFeed.cs | 0 .../AddDynamicSearchAdsCampaign.cs | 0 .../AddExpandedTextAdWithUpgradedUrls.cs | 0 .../v201705/AdvancedOperations/AddHtml5Ad.cs | 0 .../AddResponsiveDisplayAd.cs | 0 .../AddUniversalAppCampaign.cs | 0 .../CreateAndAttachSharedKeywordSet.cs | 0 .../FindAndRemoveCriteriaFromSharedSet.cs | 0 .../GetAdGroupBidModifiers.cs | 0 .../UsePortfolioBiddingStrategy.cs | 0 .../AddAdGroupDemographicCriteria.cs | 0 .../v201705/BasicOperations/AddAdGroups.cs | 0 .../v201705/BasicOperations/AddCampaigns.cs | 0 .../BasicOperations/AddExpandedTextAds.cs | 0 .../v201705/BasicOperations/AddKeywords.cs | 0 .../v201705/BasicOperations/GetAdGroups.cs | 0 .../v201705/BasicOperations/GetCampaigns.cs | 0 .../BasicOperations/GetCampaignsWithAwql.cs | 0 .../BasicOperations/GetExpandedTextAds.cs | 0 .../v201705/BasicOperations/GetKeywords.cs | 0 .../CSharp/v201705/BasicOperations/PauseAd.cs | 0 .../v201705/BasicOperations/RemoveAd.cs | 0 .../v201705/BasicOperations/RemoveAdGroup.cs | 0 .../v201705/BasicOperations/RemoveCampaign.cs | 0 .../v201705/BasicOperations/RemoveKeyword.cs | 0 .../v201705/BasicOperations/UpdateAdGroup.cs | 0 .../v201705/BasicOperations/UpdateCampaign.cs | 0 .../v201705/BasicOperations/UpdateKeyword.cs | 0 .../AddCampaignGroupsAndPerformanceTargets.cs | 0 .../CampaignManagement/AddCampaignLabels.cs | 0 .../AddCompleteCampaignsUsingBatchJob.cs | 0 ...CompleteCampaignsUsingStreamingBatchJob.cs | 0 .../v201705/CampaignManagement/AddDraft.cs | 0 .../AddKeywordsUsingIncrementalBatchJob.cs | 0 .../v201705/CampaignManagement/AddTrial.cs | 0 .../GetAllDisapprovedAds.cs | 0 .../GetAllDisapprovedAdsWihAwql.cs | 0 .../CampaignManagement/GetCampaignsByLabel.cs | 0 .../CampaignManagement/GraduateTrial.cs | 0 .../CampaignManagement/SetAdParameters.cs | 0 .../CampaignManagement/SetBidModifier.cs | 0 .../CampaignManagement/ValidateTextAd.cs | 0 .../ErrorHandling/HandlePartialFailures.cs | 0 .../HandlePolicyViolationError.cs | 0 .../ErrorHandling/HandleRateExceededError.cs | 0 .../AddGoogleMyBusinessLocationExtensions.cs | 0 .../CSharp/v201705/Extensions/AddPrices.cs | 0 .../CSharp/v201705/Extensions/AddSitelinks.cs | 0 .../Extensions/AddSitelinksUsingFeeds.cs | 0 .../Migration/MigrateToExtensionSettings.cs | 0 .../Miscellaneous/GetAllVideosAndImages.cs | 0 .../v201705/Miscellaneous/UploadImage.cs | 0 .../Miscellaneous/UploadMediaBundle.cs | 0 .../Optimization/EstimateKeywordTraffic.cs | 0 .../Optimization/GetAdGroupBidSimulations.cs | 0 ...CampaignCriterionBidModifierSimulations.cs | 0 .../Optimization/GetKeywordBidSimulations.cs | 0 .../v201705/Optimization/GetKeywordIdeas.cs | 0 .../CSharp/v201705/Remarketing/AddAudience.cs | 0 .../Remarketing/AddConversionTracker.cs | 0 .../Remarketing/AddCrmBasedUserList.cs | 0 .../AddRuleBasedRemarketingList.cs | 0 .../UploadOfflineCallConversions.cs | 0 .../Remarketing/UploadOfflineConversions.cs | 0 .../DownloadCriteriaReportWithAwql.cs | 0 .../DownloadCriteriaReportWithSelector.cs | 0 .../v201705/Reporting/GetReportFields.cs | 0 .../Reporting/ParallelReportDownload.cs | 0 .../Reporting/StreamCriteriaReportResults.cs | 0 .../Reporting/StreamCriteriaReportToPoco.cs | 0 .../StreamReportToPredefinedReportRowType.cs | 0 .../AddProductPartitionTree.cs | 0 .../ShoppingCampaigns/AddProductScope.cs | 0 .../ShoppingCampaigns/AddShoppingCampaign.cs | 0 .../AddShoppingCampaignForShowcaseAds.cs | 0 .../GetProductCategoryTaxonomy.cs | 0 .../BudgetUtilizationReport.cs | 0 .../BudgetUtilizationReport/README.md | 0 .../GetNewKeywords/GetNewKeywords.cs | 0 .../Solutions/GetNewKeywords/README.md | 0 .../Targeting/AddCampaignTargetingCriteria.cs | 0 .../Targeting/GetCampaignTargetingCriteria.cs | 0 .../GetTargetableLanguagesAndCarriers.cs | 0 .../v201705/Targeting/LookupLocation.cs | 0 .../AdWords/Vb/AdWords.Examples.VB.vbproj | 0 .../AdWords/Vb/App.config | 0 .../AdWords/Vb/ExampleBase.vb | 0 .../AdWords/Vb/ExampleUtilities.vb | 0 .../AdWords/Vb/Program.vb | 0 .../AdWords/Vb/Properties/AssemblyInfo.vb | 0 .../AdWords/Vb/Properties/Properties.vb | 0 .../AccountManagement/AcceptServiceLink.vb | 0 .../AccountManagement/CreateAccount.vb | 0 .../AccountManagement/GetAccountChanges.vb | 0 .../AccountManagement/GetAccountHierarchy.vb | 0 .../AdvancedOperations/AddAdCustomizers.vb | 0 .../AddAdGroupBidModifier.vb | 0 .../AddClickToDownloadAd.vb | 0 .../AddExpandedTextAdWithUpgradedUrls.vb | 0 .../v201609/AdvancedOperations/AddHtml5Ad.vb | 0 .../AddResponsiveDisplayAd.vb | 0 .../AddUniversalAppCampaign.vb | 0 .../CreateAndAttachSharedKeywordSet.vb | 0 .../FindAndRemoveCriteriaFromSharedSet.vb | 0 .../GetAdGroupBidModifiers.vb | 0 .../UsePortfolioBiddingStrategy.vb | 0 .../AddAdGroupDemographicCriteria.vb | 0 .../Vb/v201609/BasicOperations/AddAdGroups.vb | 0 .../v201609/BasicOperations/AddCampaigns.vb | 0 .../BasicOperations/AddExpandedTextAds.vb | 0 .../Vb/v201609/BasicOperations/AddKeywords.vb | 0 .../Vb/v201609/BasicOperations/GetAdGroups.vb | 0 .../v201609/BasicOperations/GetCampaigns.vb | 0 .../BasicOperations/GetCampaignsWithAwql.vb | 0 .../BasicOperations/GetExpandedTextAds.vb | 0 .../Vb/v201609/BasicOperations/GetKeywords.vb | 0 .../Vb/v201609/BasicOperations/GetTextAds.vb | 0 .../Vb/v201609/BasicOperations/PauseAd.vb | 0 .../Vb/v201609/BasicOperations/RemoveAd.vb | 0 .../v201609/BasicOperations/RemoveAdGroup.vb | 0 .../v201609/BasicOperations/RemoveCampaign.vb | 0 .../v201609/BasicOperations/RemoveKeyword.vb | 0 .../v201609/BasicOperations/UpdateAdGroup.vb | 0 .../v201609/BasicOperations/UpdateCampaign.vb | 0 .../v201609/BasicOperations/UpdateKeyword.vb | 0 .../CampaignManagement/AddCampaignLabels.vb | 0 .../AddCompleteCampaignsUsingBatchJob.vb | 0 ...CompleteCampaignsUsingStreamingBatchJob.vb | 0 .../Vb/v201609/CampaignManagement/AddDraft.vb | 0 .../AddKeywordsUsingIncrementalBatchJob.vb | 0 .../Vb/v201609/CampaignManagement/AddTrial.vb | 0 .../GetAllDisapprovedAds.vb | 0 .../GetAllDisapprovedAdsWithAwql.vb | 0 .../CampaignManagement/GetCampaignsByLabel.vb | 0 .../CampaignManagement/GraduateTrial.vb | 0 .../CampaignManagement/SetAdParameters.vb | 0 .../CampaignManagement/SetBidModifier.vb | 0 .../CampaignManagement/ValidateTextAd.vb | 0 .../ErrorHandling/HandlePartialFailures.vb | 0 .../HandlePolicyViolationError.vb | 0 .../ErrorHandling/HandleRateExceededError.vb | 0 .../AddGoogleMyBusinessLocationExtensions.vb | 0 .../Vb/v201609/Extensions/AddPrices.vb | 0 .../Vb/v201609/Extensions/AddSitelinks.vb | 0 .../Extensions/AddSitelinksUsingFeeds.vb | 0 .../Migration/MigrateToExtensionSettings.vb | 0 .../Miscellaneous/GetAllVideosAndImages.vb | 0 .../Vb/v201609/Miscellaneous/UploadImage.vb | 0 .../Miscellaneous/UploadMediaBundle.vb | 0 .../Optimization/EstimateKeywordTraffic.vb | 0 .../Optimization/GetAdGroupBidSimulations.vb | 0 ...CampaignCriterionBidModifierSimulations.vb | 0 .../Optimization/GetKeywordBidSimulations.vb | 0 .../v201609/Optimization/GetKeywordIdeas.vb | 0 .../Vb/v201609/Remarketing/AddAudience.vb | 0 .../Remarketing/AddConversionTracker.vb | 0 .../Remarketing/AddCrmBasedUserList.vb | 0 .../AddRuleBasedRemarketingList.vb | 0 .../UploadOfflineCallConversions.vb | 0 .../Remarketing/UploadOfflineConversions.vb | 0 .../Reporting/DownloadCriteriaReport.vb | 0 .../DownloadCriteriaReportWithAwql.vb | 0 .../Vb/v201609/Reporting/GetReportFields.vb | 0 .../Reporting/StreamCriteriaReportResults.vb | 0 .../Reporting/StreamCriteriaReportToPoco.vb | 0 .../StreamReportToPredefinedReportRowType.vb | 0 .../AddProductPartitionTree.vb | 0 .../ShoppingCampaigns/AddProductScope.vb | 0 .../ShoppingCampaigns/AddShoppingCampaign.vb | 0 .../GetProductCategoryTaxonomy.vb | 0 .../Targeting/AddCampaignTargetingCriteria.vb | 0 .../Targeting/GetCampaignTargetingCriteria.vb | 0 .../GetTargetableLanguagesAndCarriers.vb | 0 .../Vb/v201609/Targeting/LookupLocation.vb | 0 .../AccountManagement/AcceptServiceLink.vb | 0 .../AccountManagement/CreateAccount.vb | 0 .../AccountManagement/GetAccountChanges.vb | 0 .../AccountManagement/GetAccountHierarchy.vb | 0 .../AdvancedOperations/AddAdCustomizers.vb | 0 .../AddAdGroupBidModifier.vb | 0 .../AddClickToDownloadAd.vb | 0 .../AddExpandedTextAdWithUpgradedUrls.vb | 0 .../v201702/AdvancedOperations/AddHtml5Ad.vb | 0 .../AddResponsiveDisplayAd.vb | 0 .../AddUniversalAppCampaign.vb | 0 .../CreateAndAttachSharedKeywordSet.vb | 0 .../FindAndRemoveCriteriaFromSharedSet.vb | 0 .../GetAdGroupBidModifiers.vb | 0 .../UsePortfolioBiddingStrategy.vb | 0 .../AddAdGroupDemographicCriteria.vb | 0 .../Vb/v201702/BasicOperations/AddAdGroups.vb | 0 .../v201702/BasicOperations/AddCampaigns.vb | 0 .../BasicOperations/AddExpandedTextAds.vb | 0 .../Vb/v201702/BasicOperations/AddKeywords.vb | 0 .../Vb/v201702/BasicOperations/GetAdGroups.vb | 0 .../v201702/BasicOperations/GetCampaigns.vb | 0 .../BasicOperations/GetCampaignsWithAwql.vb | 0 .../BasicOperations/GetExpandedTextAds.vb | 0 .../Vb/v201702/BasicOperations/GetKeywords.vb | 0 .../Vb/v201702/BasicOperations/GetTextAds.vb | 0 .../Vb/v201702/BasicOperations/PauseAd.vb | 0 .../Vb/v201702/BasicOperations/RemoveAd.vb | 0 .../v201702/BasicOperations/RemoveAdGroup.vb | 0 .../v201702/BasicOperations/RemoveCampaign.vb | 0 .../v201702/BasicOperations/RemoveKeyword.vb | 0 .../v201702/BasicOperations/UpdateAdGroup.vb | 0 .../v201702/BasicOperations/UpdateCampaign.vb | 0 .../v201702/BasicOperations/UpdateKeyword.vb | 0 .../CampaignManagement/AddCampaignLabels.vb | 0 .../AddCompleteCampaignsUsingBatchJob.vb | 0 ...CompleteCampaignsUsingStreamingBatchJob.vb | 0 .../Vb/v201702/CampaignManagement/AddDraft.vb | 0 .../AddKeywordsUsingIncrementalBatchJob.vb | 0 .../Vb/v201702/CampaignManagement/AddTrial.vb | 0 .../GetAllDisapprovedAds.vb | 0 .../GetAllDisapprovedAdsWithAwql.vb | 0 .../CampaignManagement/GetCampaignsByLabel.vb | 0 .../CampaignManagement/GraduateTrial.vb | 0 .../CampaignManagement/SetAdParameters.vb | 0 .../CampaignManagement/SetBidModifier.vb | 0 .../CampaignManagement/ValidateTextAd.vb | 0 .../ErrorHandling/HandlePartialFailures.vb | 0 .../HandlePolicyViolationError.vb | 0 .../ErrorHandling/HandleRateExceededError.vb | 0 .../AddGoogleMyBusinessLocationExtensions.vb | 0 .../Vb/v201702/Extensions/AddPrices.vb | 0 .../Vb/v201702/Extensions/AddSitelinks.vb | 0 .../Extensions/AddSitelinksUsingFeeds.vb | 0 .../Migration/MigrateToExtensionSettings.vb | 0 .../Miscellaneous/GetAllVideosAndImages.vb | 0 .../Vb/v201702/Miscellaneous/UploadImage.vb | 0 .../Miscellaneous/UploadMediaBundle.vb | 0 .../Optimization/EstimateKeywordTraffic.vb | 0 .../Optimization/GetAdGroupBidSimulations.vb | 0 ...CampaignCriterionBidModifierSimulations.vb | 0 .../Optimization/GetKeywordBidSimulations.vb | 0 .../v201702/Optimization/GetKeywordIdeas.vb | 0 .../Vb/v201702/Remarketing/AddAudience.vb | 0 .../Remarketing/AddConversionTracker.vb | 0 .../Remarketing/AddCrmBasedUserList.vb | 0 .../AddRuleBasedRemarketingList.vb | 0 .../UploadOfflineCallConversions.vb | 0 .../Remarketing/UploadOfflineConversions.vb | 0 .../DownloadCriteriaReportWithAwql.vb | 0 .../DownloadCriteriaReportWithSelector.vb | 0 .../Vb/v201702/Reporting/GetReportFields.vb | 0 .../Reporting/StreamCriteriaReportResults.vb | 0 .../Reporting/StreamCriteriaReportToPoco.vb | 0 .../StreamReportToPredefinedReportRowType.vb | 0 .../AddProductPartitionTree.vb | 0 .../ShoppingCampaigns/AddProductScope.vb | 0 .../ShoppingCampaigns/AddShoppingCampaign.vb | 0 .../AddShoppingCampaignForShowcaseAds.vb | 0 .../GetProductCategoryTaxonomy.vb | 0 .../Targeting/AddCampaignTargetingCriteria.vb | 0 .../Targeting/GetCampaignTargetingCriteria.vb | 0 .../GetTargetableLanguagesAndCarriers.vb | 0 .../Vb/v201702/Targeting/LookupLocation.vb | 0 .../AccountManagement/AcceptServiceLink.vb | 0 .../AccountManagement/CreateAccount.vb | 0 .../AccountManagement/GetAccountChanges.vb | 0 .../AccountManagement/GetAccountHierarchy.vb | 0 .../AdvancedOperations/AddAdCustomizers.vb | 0 .../AddAdGroupBidModifier.vb | 0 .../AddClickToDownloadAd.vb | 0 .../AdvancedOperations/AddDynamicPageFeed.vb | 0 .../AddDynamicSearchAdsCampaign.vb | 0 .../AddExpandedTextAdWithUpgradedUrls.vb | 0 .../v201705/AdvancedOperations/AddHtml5Ad.vb | 0 .../AddResponsiveDisplayAd.vb | 0 .../AddUniversalAppCampaign.vb | 0 .../CreateAndAttachSharedKeywordSet.vb | 0 .../FindAndRemoveCriteriaFromSharedSet.vb | 0 .../GetAdGroupBidModifiers.vb | 0 .../UsePortfolioBiddingStrategy.vb | 0 .../AddAdGroupDemographicCriteria.vb | 0 .../Vb/v201705/BasicOperations/AddAdGroups.vb | 0 .../v201705/BasicOperations/AddCampaigns.vb | 0 .../BasicOperations/AddExpandedTextAds.vb | 0 .../Vb/v201705/BasicOperations/AddKeywords.vb | 0 .../Vb/v201705/BasicOperations/GetAdGroups.vb | 0 .../v201705/BasicOperations/GetCampaigns.vb | 0 .../BasicOperations/GetCampaignsWithAwql.vb | 0 .../BasicOperations/GetExpandedTextAds.vb | 0 .../Vb/v201705/BasicOperations/GetKeywords.vb | 0 .../Vb/v201705/BasicOperations/PauseAd.vb | 0 .../Vb/v201705/BasicOperations/RemoveAd.vb | 0 .../v201705/BasicOperations/RemoveAdGroup.vb | 0 .../v201705/BasicOperations/RemoveCampaign.vb | 0 .../v201705/BasicOperations/RemoveKeyword.vb | 0 .../v201705/BasicOperations/UpdateAdGroup.vb | 0 .../v201705/BasicOperations/UpdateCampaign.vb | 0 .../v201705/BasicOperations/UpdateKeyword.vb | 0 .../AddCampaignGroupsAndPerformanceTargets.vb | 0 .../CampaignManagement/AddCampaignLabels.vb | 0 .../AddCompleteCampaignsUsingBatchJob.vb | 0 ...CompleteCampaignsUsingStreamingBatchJob.vb | 0 .../Vb/v201705/CampaignManagement/AddDraft.vb | 0 .../AddKeywordsUsingIncrementalBatchJob.vb | 0 .../Vb/v201705/CampaignManagement/AddTrial.vb | 0 .../GetAllDisapprovedAds.vb | 0 .../GetAllDisapprovedAdsWithAwql.vb | 0 .../CampaignManagement/GetCampaignsByLabel.vb | 0 .../CampaignManagement/GraduateTrial.vb | 0 .../CampaignManagement/SetAdParameters.vb | 0 .../CampaignManagement/SetBidModifier.vb | 0 .../CampaignManagement/ValidateTextAd.vb | 0 .../ErrorHandling/HandlePartialFailures.vb | 0 .../HandlePolicyViolationError.vb | 0 .../ErrorHandling/HandleRateExceededError.vb | 0 .../AddGoogleMyBusinessLocationExtensions.vb | 0 .../Vb/v201705/Extensions/AddPrices.vb | 0 .../Vb/v201705/Extensions/AddSitelinks.vb | 0 .../Extensions/AddSitelinksUsingFeeds.vb | 0 .../Migration/MigrateToExtensionSettings.vb | 0 .../Miscellaneous/GetAllVideosAndImages.vb | 0 .../Vb/v201705/Miscellaneous/UploadImage.vb | 0 .../Miscellaneous/UploadMediaBundle.vb | 0 .../Optimization/EstimateKeywordTraffic.vb | 0 .../Optimization/GetAdGroupBidSimulations.vb | 0 ...CampaignCriterionBidModifierSimulations.vb | 0 .../Optimization/GetKeywordBidSimulations.vb | 0 .../v201705/Optimization/GetKeywordIdeas.vb | 0 .../Vb/v201705/Remarketing/AddAudience.vb | 0 .../Remarketing/AddConversionTracker.vb | 0 .../Remarketing/AddCrmBasedUserList.vb | 0 .../AddRuleBasedRemarketingList.vb | 0 .../UploadOfflineCallConversions.vb | 0 .../Remarketing/UploadOfflineConversions.vb | 0 .../DownloadCriteriaReportWithAwql.vb | 0 .../DownloadCriteriaReportWithSelector.vb | 0 .../Vb/v201705/Reporting/GetReportFields.vb | 0 .../Reporting/StreamCriteriaReportResults.vb | 0 .../Reporting/StreamCriteriaReportToPoco.vb | 0 .../StreamReportToPredefinedReportRowType.vb | 0 .../AddProductPartitionTree.vb | 0 .../ShoppingCampaigns/AddProductScope.vb | 0 .../ShoppingCampaigns/AddShoppingCampaign.vb | 0 .../AddShoppingCampaignForShowcaseAds.vb | 0 .../GetProductCategoryTaxonomy.vb | 0 .../Targeting/AddCampaignTargetingCriteria.vb | 0 .../Targeting/GetCampaignTargetingCriteria.vb | 0 .../GetTargetableLanguagesAndCarriers.vb | 0 .../Vb/v201705/Targeting/LookupLocation.vb | 0 .../Dfp/CSharp/App.config | 0 .../Dfp/CSharp/Dfp.Examples.CSharp.csproj | 0 .../Dfp/CSharp/OAuth/ConsoleExample.cs | 0 .../Dfp/CSharp/OAuth/Default.aspx | 0 .../Dfp/CSharp/OAuth/Default.aspx.cs | 0 .../Dfp/CSharp/OAuth/Default.aspx.designer.cs | 0 .../OAuth/Dfp.Examples.CSharp.OAuth.csproj | 0 .../Dfp/CSharp/OAuth/OAuthLogin.aspx | 0 .../Dfp/CSharp/OAuth/OAuthLogin.aspx.cs | 0 .../CSharp/OAuth/OAuthLogin.aspx.designer.cs | 0 .../CSharp/OAuth/Properties/AssemblyInfo.cs | 0 .../Dfp/CSharp/OAuth/Properties/Properties.cs | 0 .../Dfp/CSharp/OAuth/README.md | 0 .../Dfp/CSharp/OAuth/Web.config | 0 .../Dfp/CSharp/OAuth/css/main.css | 0 .../Dfp/CSharp/Program.cs | 0 .../Dfp/CSharp/Properties/AssemblyInfo.cs | 0 .../Dfp/CSharp/Properties/Properties.cs | 0 .../Dfp/CSharp/SampleBase.cs | 0 .../CreateActivityGroups.cs | 0 .../GetActiveActivityGroups.cs | 0 .../GetAllActivityGroups.cs | 0 .../UpdateActivityGroups.cs | 0 .../ActivityService/CreateActivities.cs | 0 .../ActivityService/GetActiveActivities.cs | 0 .../ActivityService/GetAllActivities.cs | 0 .../ActivityService/UpdateActivities.cs | 0 .../CreateAudienceSegments.cs | 0 .../GetAllAudienceSegments.cs | 0 .../GetFirstPartyAudienceSegments.cs | 0 .../PopulateFirstPartyAudienceSegments.cs | 0 .../UpdateAudienceSegments.cs | 0 .../BaseRateService/CreateProductBaseRates.cs | 0 .../CreateProductTemplateBaseRates.cs | 0 .../BaseRateService/GetAllBaseRates.cs | 0 .../GetBaseRatesForRateCard.cs | 0 .../BaseRateService/UpdateBaseRates.cs | 0 .../v201611/CompanyService/CreateCompanies.cs | 0 .../v201611/CompanyService/GetAdvertisers.cs | 0 .../v201611/CompanyService/GetAllCompanies.cs | 0 .../v201611/CompanyService/UpdateCompanies.cs | 0 .../v201611/ContactService/CreateContacts.cs | 0 .../v201611/ContactService/GetAllContacts.cs | 0 .../ContactService/GetUninvitedContacts.cs | 0 .../v201611/ContactService/UpdateContacts.cs | 0 .../CreateContentMetadataKeyHierarchies.cs | 0 .../DeleteContentMetadataKeyHierarchies.cs | 0 .../GetAllContentMetadataKeyHierarchies.cs | 0 .../UpdateContentMetadataKeyHierarchies.cs | 0 .../v201611/ContentService/GetAllContent.cs | 0 .../CreativeService/CopyImageCreatives.cs | 0 .../CreateCreativeFromTemplate.cs | 0 .../CreativeService/CreateCreatives.cs | 0 .../CreativeService/CreateCustomCreative.cs | 0 .../CreativeService/CreateNativeCreative.cs | 0 .../CreativeService/GetAllCreatives.cs | 0 .../CreativeService/GetImageCreatives.cs | 0 .../CreativeService/UpdateCreatives.cs | 0 .../CreativeSetService/GetAllCreativeSets.cs | 0 .../GetCreativeSetsForMasterCreative.cs | 0 .../GetAllCreativeTemplates.cs | 0 .../GetSystemDefinedCreativeTemplates.cs | 0 .../CreateCreativeWrappers.cs | 0 .../DeactivateCreativeWrappers.cs | 0 .../GetActiveCreativeWrappers.cs | 0 .../GetAllCreativeWrappers.cs | 0 .../UpdateCreativeWrappers.cs | 0 .../CreateCustomFieldOptions.cs | 0 .../CustomFieldService/CreateCustomFields.cs | 0 .../DeactivateCustomFields.cs | 0 .../CustomFieldService/GetAllCustomFields.cs | 0 .../GetCustomFieldsForLineItems.cs | 0 .../SetLineItemCustomFieldValue.cs | 0 .../CustomFieldService/UpdateCustomFields.cs | 0 .../CreateCustomTargetingKeysAndValues.cs | 0 .../GetAllCustomTargetingKeysAndValues.cs | 0 ...tPredefinedCustomTargetingKeysAndValues.cs | 0 .../UpdateCustomTargetingKeys.cs | 0 .../UpdateCustomTargetingValues.cs | 0 .../CreateExchangeRates.cs | 0 .../GetAllExchangeRates.cs | 0 .../GetExchangeRatesForCurrencyCode.cs | 0 .../UpdateExchangeRates.cs | 0 .../GetAvailabilityForecast.cs | 0 .../GetAvailabilityForecastById.cs | 0 .../GetDeliveryForecastByIds.cs | 0 .../v201611/InventoryService/CreateAdUnits.cs | 0 .../InventoryService/CreateVideoAdUnit.cs | 0 .../InventoryService/DeActivateAdUnits.cs | 0 .../InventoryService/GetAdUnitsByStatement.cs | 0 .../InventoryService/GetAllAdUnitSizes.cs | 0 .../v201611/InventoryService/GetAllAdUnits.cs | 0 .../InventoryService/GetInventoryTree.cs | 0 .../v201611/InventoryService/UpdateAdUnits.cs | 0 .../v201611/LabelService/CreateLabels.cs | 0 .../LabelService/DeactivateActiveLabels.cs | 0 .../v201611/LabelService/GetActiveLabels.cs | 0 .../v201611/LabelService/GetAllLabels.cs | 0 .../v201611/LabelService/UpdateLabels.cs | 0 .../ActivateLicas.cs | 0 .../CreateLicas.cs | 0 .../DeactivateLicas.cs | 0 .../GetAllLicas.cs | 0 .../GetLicasForLineItem.cs | 0 .../UpdateLicas.cs | 0 .../LineItemService/ActivateLineItem.cs | 0 .../LineItemService/CreateLineItems.cs | 0 .../LineItemService/CreateVideoLineItem.cs | 0 .../LineItemService/GetAllLineItems.cs | 0 .../GetLineItemsThatNeedCreatives.cs | 0 .../GetRecentlyUpdatedLineItems.cs | 0 .../LineItemService/TargetCustomCriteria.cs | 0 .../LineItemService/UpdateLineItems.cs | 0 .../v201611/NetworkService/GetAllNetworks.cs | 0 .../NetworkService/GetCurrentNetwork.cs | 0 .../v201611/NetworkService/MakeTestNetwork.cs | 0 .../v201611/OrderService/ApproveOrder.cs | 0 .../v201611/OrderService/CreateOrders.cs | 0 .../v201611/OrderService/GetAllOrders.cs | 0 .../OrderService/GetOrdersStartingSoon.cs | 0 .../v201611/OrderService/UpdateOrders.cs | 0 .../v201611/PackageService/CreatePackages.cs | 0 .../CreateProposalLineItemsFromPackage.cs | 0 .../v201611/PackageService/GetAllPackages.cs | 0 .../PackageService/GetInProgressPackages.cs | 0 .../v201611/PackageService/UpdatePackages.cs | 0 .../PlacementService/CreatePlacements.cs | 0 .../PlacementService/DeactivatePlacement.cs | 0 .../PlacementService/GetActivePlacements.cs | 0 .../PlacementService/GetAllPlacements.cs | 0 .../PlacementService/UpdatePlacements.cs | 0 .../PremiumRateService/CreatePremiumRates.cs | 0 .../PremiumRateService/GetAllPremiumRates.cs | 0 .../GetPremiumRatesForRateCard.cs | 0 .../PremiumRateService/UpdatePremiumRates.cs | 0 .../GetAllProductPackageItems.cs | 0 ...GetProductPackageItemsForProductPackage.cs | 0 .../ActivateProductPackage.cs | 0 .../CreateProductPackages.cs | 0 .../GetActiveProductPackages.cs | 0 .../GetAllProductPackages.cs | 0 .../UpdateProductPackages.cs | 0 ...ogrammaticProductsForNonSalesManagement.cs | 0 .../v201611/ProductService/GetAllProducts.cs | 0 .../GetProductsForProductTemplate.cs | 0 ...ublishProgrammaticProductsToMarketplace.cs | 0 .../v201611/ProductService/UpdateProducts.cs | 0 .../ActivateProductTemplates.cs | 0 .../CreateProductTemplates.cs | 0 .../CreateProgrammaticProductTemplates.cs | 0 .../GetAllProductTemplates.cs | 0 .../GetSponsorshipProductTemplates.cs | 0 .../UpdateProductTemplates.cs | 0 .../ArchiveProposalLineItems.cs | 0 .../CreateProgrammaticProposalLineItems.cs | 0 ...cProposalLineItemsForNonSalesManagement.cs | 0 .../CreateProposalLineItems.cs | 0 .../GetAllProposalLineItems.cs | 0 .../GetProposalLineItemsForProposal.cs | 0 .../UpdateProposalLineItems.cs | 0 .../CreateProgrammaticProposals.cs | 0 ...grammaticProposalsForNonSalesManagement.cs | 0 .../ProposalService/CreateProposals.cs | 0 .../ProposalService/GetAllProposals.cs | 0 .../ProposalService/GetMarketplaceComments.cs | 0 .../GetProposalsPendingApproval.cs | 0 .../ProposalService/RequestBuyerAcceptance.cs | 0 .../SubmitProposalsForApproval.cs | 0 .../ProposalService/UpdateProposals.cs | 0 .../FetchMatchTables.cs | 0 .../GetAllLineItemsUsingPql.cs | 0 .../GetAllProgrammaticBuyers.cs | 0 .../GetGeoTargets.cs | 0 .../GetLineItemsNamedLike.cs | 0 .../RateCardService/GetAllRateCards.cs | 0 .../GetMarketplaceRateCards.cs | 0 ...nLineItemReportsForReconciliationReport.cs | 0 ...tionOrderReportsForReconciliationReport.cs | 0 ...iationReportRowsForReconciliationReport.cs | 0 .../GetAllReconciliationReports.cs | 0 ...econciliationReportForLastBillingPeriod.cs | 0 .../ReportService/RunDeliveryReport.cs | 0 .../ReportService/RunInventoryReport.cs | 0 .../v201611/ReportService/RunReachReport.cs | 0 .../RunReportWithCustomFields.cs | 0 .../v201611/ReportService/RunSalesReport.cs | 0 .../v201611/ReportService/RunSavedQuery.cs | 0 .../ApproveSuggestedAdUnits.cs | 0 .../GetAllSuggestedAdUnits.cs | 0 .../GetHighlyRequestedSuggestedAdUnits.cs | 0 .../CSharp/v201611/TeamService/CreateTeams.cs | 0 .../CSharp/v201611/TeamService/GetAllTeams.cs | 0 .../CSharp/v201611/TeamService/UpdateTeams.cs | 0 .../CSharp/v201611/UserService/CreateUsers.cs | 0 .../v201611/UserService/DeactivateUser.cs | 0 .../CSharp/v201611/UserService/GetAllRoles.cs | 0 .../CSharp/v201611/UserService/GetAllUsers.cs | 0 .../v201611/UserService/GetCurrentUser.cs | 0 .../UserService/GetUserByEmailAddress.cs | 0 .../CSharp/v201611/UserService/UpdateUsers.cs | 0 .../CreateUserTeamAssociations.cs | 0 .../DeleteUserTeamAssociations.cs | 0 .../GetAllUserTeamAssociations.cs | 0 .../GetUserTeamAssociationsForUser.cs | 0 .../UpdateUserTeamAssociations.cs | 0 .../ApproveWorkflowApprovalRequests.cs | 0 .../GetWorkflowApprovalRequests.cs | 0 .../GetWorkflowExternalConditionRequests.cs | 0 ...riggerWorkflowExternalConditionRequests.cs | 0 .../CreateActivityGroups.cs | 0 .../GetActiveActivityGroups.cs | 0 .../GetAllActivityGroups.cs | 0 .../UpdateActivityGroups.cs | 0 .../ActivityService/CreateActivities.cs | 0 .../ActivityService/GetActiveActivities.cs | 0 .../ActivityService/GetAllActivities.cs | 0 .../ActivityService/UpdateActivities.cs | 0 .../CreateAudienceSegments.cs | 0 .../GetAllAudienceSegments.cs | 0 .../GetFirstPartyAudienceSegments.cs | 0 .../PopulateFirstPartyAudienceSegments.cs | 0 .../UpdateAudienceSegments.cs | 0 .../BaseRateService/CreateProductBaseRates.cs | 0 .../CreateProductTemplateBaseRates.cs | 0 .../BaseRateService/GetAllBaseRates.cs | 0 .../GetBaseRatesForRateCard.cs | 0 .../BaseRateService/UpdateBaseRates.cs | 0 .../v201702/CompanyService/CreateCompanies.cs | 0 .../v201702/CompanyService/GetAdvertisers.cs | 0 .../v201702/CompanyService/GetAllCompanies.cs | 0 .../v201702/CompanyService/UpdateCompanies.cs | 0 .../v201702/ContactService/CreateContacts.cs | 0 .../v201702/ContactService/GetAllContacts.cs | 0 .../ContactService/GetUninvitedContacts.cs | 0 .../v201702/ContactService/UpdateContacts.cs | 0 .../CreateContentMetadataKeyHierarchies.cs | 0 .../DeleteContentMetadataKeyHierarchies.cs | 0 .../GetAllContentMetadataKeyHierarchies.cs | 0 .../UpdateContentMetadataKeyHierarchies.cs | 0 .../v201702/ContentService/GetAllContent.cs | 0 .../CreativeService/CopyImageCreatives.cs | 0 .../CreateCreativeFromTemplate.cs | 0 .../CreativeService/CreateCreatives.cs | 0 .../CreativeService/CreateCustomCreative.cs | 0 .../CreativeService/CreateNativeCreative.cs | 0 .../CreativeService/GetAllCreatives.cs | 0 .../CreativeService/GetImageCreatives.cs | 0 .../CreativeService/UpdateCreatives.cs | 0 .../CreativeSetService/GetAllCreativeSets.cs | 0 .../GetCreativeSetsForMasterCreative.cs | 0 .../GetAllCreativeTemplates.cs | 0 .../GetSystemDefinedCreativeTemplates.cs | 0 .../CreateCreativeWrappers.cs | 0 .../DeactivateCreativeWrappers.cs | 0 .../GetActiveCreativeWrappers.cs | 0 .../GetAllCreativeWrappers.cs | 0 .../UpdateCreativeWrappers.cs | 0 .../CreateCustomFieldOptions.cs | 0 .../CustomFieldService/CreateCustomFields.cs | 0 .../DeactivateCustomFields.cs | 0 .../CustomFieldService/GetAllCustomFields.cs | 0 .../GetCustomFieldsForLineItems.cs | 0 .../SetLineItemCustomFieldValue.cs | 0 .../CustomFieldService/UpdateCustomFields.cs | 0 .../CreateCustomTargetingKeysAndValues.cs | 0 .../GetAllCustomTargetingKeysAndValues.cs | 0 ...tPredefinedCustomTargetingKeysAndValues.cs | 0 .../UpdateCustomTargetingKeys.cs | 0 .../UpdateCustomTargetingValues.cs | 0 .../CreateExchangeRates.cs | 0 .../GetAllExchangeRates.cs | 0 .../GetExchangeRatesForCurrencyCode.cs | 0 .../UpdateExchangeRates.cs | 0 .../GetAvailabilityForecast.cs | 0 .../GetAvailabilityForecastById.cs | 0 .../GetDeliveryForecastByIds.cs | 0 .../v201702/InventoryService/CreateAdUnits.cs | 0 .../InventoryService/CreateVideoAdUnit.cs | 0 .../InventoryService/DeActivateAdUnits.cs | 0 .../InventoryService/GetAdUnitsByStatement.cs | 0 .../InventoryService/GetAllAdUnitSizes.cs | 0 .../v201702/InventoryService/GetAllAdUnits.cs | 0 .../InventoryService/GetInventoryTree.cs | 0 .../v201702/InventoryService/UpdateAdUnits.cs | 0 .../v201702/LabelService/CreateLabels.cs | 0 .../LabelService/DeactivateActiveLabels.cs | 0 .../v201702/LabelService/GetActiveLabels.cs | 0 .../v201702/LabelService/GetAllLabels.cs | 0 .../v201702/LabelService/UpdateLabels.cs | 0 .../ActivateLicas.cs | 0 .../CreateLicas.cs | 0 .../DeactivateLicas.cs | 0 .../GetAllLicas.cs | 0 .../GetLicasForLineItem.cs | 0 .../UpdateLicas.cs | 0 .../LineItemService/ActivateLineItem.cs | 0 .../LineItemService/CreateLineItems.cs | 0 .../LineItemService/CreateVideoLineItem.cs | 0 .../LineItemService/GetAllLineItems.cs | 0 .../GetLineItemsThatNeedCreatives.cs | 0 .../GetRecentlyUpdatedLineItems.cs | 0 .../LineItemService/TargetCustomCriteria.cs | 0 .../LineItemService/UpdateLineItems.cs | 0 .../NativeStyleService/CreateNativeStyles.cs | 0 .../NativeStyleService/GetAllNativeStyles.cs | 0 .../v201702/NetworkService/GetAllNetworks.cs | 0 .../NetworkService/GetCurrentNetwork.cs | 0 .../v201702/NetworkService/MakeTestNetwork.cs | 0 .../v201702/OrderService/ApproveOrder.cs | 0 .../v201702/OrderService/CreateOrders.cs | 0 .../v201702/OrderService/GetAllOrders.cs | 0 .../OrderService/GetOrdersStartingSoon.cs | 0 .../v201702/OrderService/UpdateOrders.cs | 0 .../v201702/PackageService/CreatePackages.cs | 0 .../CreateProposalLineItemsFromPackage.cs | 0 .../v201702/PackageService/GetAllPackages.cs | 0 .../PackageService/GetInProgressPackages.cs | 0 .../v201702/PackageService/UpdatePackages.cs | 0 .../PlacementService/CreatePlacements.cs | 0 .../PlacementService/DeactivatePlacement.cs | 0 .../PlacementService/GetActivePlacements.cs | 0 .../PlacementService/GetAllPlacements.cs | 0 .../PlacementService/UpdatePlacements.cs | 0 .../PremiumRateService/CreatePremiumRates.cs | 0 .../PremiumRateService/GetAllPremiumRates.cs | 0 .../GetPremiumRatesForRateCard.cs | 0 .../PremiumRateService/UpdatePremiumRates.cs | 0 .../GetAllProductPackageItems.cs | 0 ...GetProductPackageItemsForProductPackage.cs | 0 .../ActivateProductPackage.cs | 0 .../CreateProductPackages.cs | 0 .../GetActiveProductPackages.cs | 0 .../GetAllProductPackages.cs | 0 .../UpdateProductPackages.cs | 0 ...ogrammaticProductsForNonSalesManagement.cs | 0 .../v201702/ProductService/GetAllProducts.cs | 0 .../GetProductsForProductTemplate.cs | 0 ...ublishProgrammaticProductsToMarketplace.cs | 0 .../v201702/ProductService/UpdateProducts.cs | 0 .../ActivateProductTemplates.cs | 0 .../CreateProductTemplates.cs | 0 .../CreateProgrammaticProductTemplates.cs | 0 .../GetAllProductTemplates.cs | 0 .../GetSponsorshipProductTemplates.cs | 0 .../UpdateProductTemplates.cs | 0 .../ArchiveProposalLineItems.cs | 0 .../CreateProgrammaticProposalLineItems.cs | 0 ...cProposalLineItemsForNonSalesManagement.cs | 0 .../CreateProposalLineItems.cs | 0 .../GetAllProposalLineItems.cs | 0 .../GetProposalLineItemsForProposal.cs | 0 .../UpdateProposalLineItems.cs | 0 .../CreateProgrammaticProposals.cs | 0 ...grammaticProposalsForNonSalesManagement.cs | 0 .../ProposalService/CreateProposals.cs | 0 .../ProposalService/GetAllProposals.cs | 0 .../ProposalService/GetMarketplaceComments.cs | 0 .../GetProposalsPendingApproval.cs | 0 .../ProposalService/RequestBuyerAcceptance.cs | 0 .../SubmitProposalsForApproval.cs | 0 .../ProposalService/UpdateProposals.cs | 0 .../FetchMatchTables.cs | 0 .../GetAllLineItemsUsingPql.cs | 0 .../GetAllProgrammaticBuyers.cs | 0 .../GetGeoTargets.cs | 0 .../GetLineItemsNamedLike.cs | 0 .../GetRecentChanges.cs | 0 .../RateCardService/GetAllRateCards.cs | 0 .../GetMarketplaceRateCards.cs | 0 ...nLineItemReportsForReconciliationReport.cs | 0 ...tionOrderReportsForReconciliationReport.cs | 0 ...iationReportRowsForReconciliationReport.cs | 0 .../GetAllReconciliationReports.cs | 0 ...econciliationReportForLastBillingPeriod.cs | 0 .../ReportService/RunDeliveryReport.cs | 0 .../ReportService/RunInventoryReport.cs | 0 .../v201702/ReportService/RunReachReport.cs | 0 .../RunReportWithCustomFields.cs | 0 .../v201702/ReportService/RunSalesReport.cs | 0 .../v201702/ReportService/RunSavedQuery.cs | 0 .../ApproveSuggestedAdUnits.cs | 0 .../GetAllSuggestedAdUnits.cs | 0 .../GetHighlyRequestedSuggestedAdUnits.cs | 0 .../CSharp/v201702/TeamService/CreateTeams.cs | 0 .../CSharp/v201702/TeamService/GetAllTeams.cs | 0 .../CSharp/v201702/TeamService/UpdateTeams.cs | 0 .../CSharp/v201702/UserService/CreateUsers.cs | 0 .../v201702/UserService/DeactivateUser.cs | 0 .../CSharp/v201702/UserService/GetAllRoles.cs | 0 .../CSharp/v201702/UserService/GetAllUsers.cs | 0 .../v201702/UserService/GetCurrentUser.cs | 0 .../UserService/GetUserByEmailAddress.cs | 0 .../CSharp/v201702/UserService/UpdateUsers.cs | 0 .../CreateUserTeamAssociations.cs | 0 .../DeleteUserTeamAssociations.cs | 0 .../GetAllUserTeamAssociations.cs | 0 .../GetUserTeamAssociationsForUser.cs | 0 .../UpdateUserTeamAssociations.cs | 0 .../ApproveWorkflowApprovalRequests.cs | 0 .../GetWorkflowApprovalRequests.cs | 0 .../GetWorkflowExternalConditionRequests.cs | 0 ...riggerWorkflowExternalConditionRequests.cs | 0 .../CreateActivityGroups.cs | 0 .../GetActiveActivityGroups.cs | 0 .../GetAllActivityGroups.cs | 0 .../UpdateActivityGroups.cs | 0 .../ActivityService/CreateActivities.cs | 0 .../ActivityService/GetActiveActivities.cs | 0 .../ActivityService/GetAllActivities.cs | 0 .../ActivityService/UpdateActivities.cs | 0 .../CreateAudienceSegments.cs | 0 .../GetAllAudienceSegments.cs | 0 .../GetFirstPartyAudienceSegments.cs | 0 .../PopulateFirstPartyAudienceSegments.cs | 0 .../UpdateAudienceSegments.cs | 0 .../BaseRateService/CreateProductBaseRates.cs | 0 .../CreateProductTemplateBaseRates.cs | 0 .../BaseRateService/GetAllBaseRates.cs | 0 .../GetBaseRatesForRateCard.cs | 0 .../BaseRateService/UpdateBaseRates.cs | 0 .../v201705/CompanyService/CreateCompanies.cs | 0 .../v201705/CompanyService/GetAdvertisers.cs | 0 .../v201705/CompanyService/GetAllCompanies.cs | 0 .../v201705/CompanyService/UpdateCompanies.cs | 0 .../v201705/ContactService/CreateContacts.cs | 0 .../v201705/ContactService/GetAllContacts.cs | 0 .../ContactService/GetUninvitedContacts.cs | 0 .../v201705/ContactService/UpdateContacts.cs | 0 .../CreateContentMetadataKeyHierarchies.cs | 0 .../DeleteContentMetadataKeyHierarchies.cs | 0 .../GetAllContentMetadataKeyHierarchies.cs | 0 .../UpdateContentMetadataKeyHierarchies.cs | 0 .../v201705/ContentService/GetAllContent.cs | 0 .../CreativeService/CopyImageCreatives.cs | 0 .../CreateCreativeFromTemplate.cs | 0 .../CreativeService/CreateCreatives.cs | 0 .../CreativeService/CreateCustomCreative.cs | 0 .../CreativeService/CreateNativeCreative.cs | 0 .../CreativeService/GetAllCreatives.cs | 0 .../CreativeService/GetImageCreatives.cs | 0 .../CreativeService/UpdateCreatives.cs | 0 .../CreativeSetService/GetAllCreativeSets.cs | 0 .../GetCreativeSetsForMasterCreative.cs | 0 .../GetAllCreativeTemplates.cs | 0 .../GetSystemDefinedCreativeTemplates.cs | 0 .../CreateCreativeWrappers.cs | 0 .../DeactivateCreativeWrappers.cs | 0 .../GetActiveCreativeWrappers.cs | 0 .../GetAllCreativeWrappers.cs | 0 .../UpdateCreativeWrappers.cs | 0 .../CreateCustomFieldOptions.cs | 0 .../CustomFieldService/CreateCustomFields.cs | 0 .../DeactivateCustomFields.cs | 0 .../CustomFieldService/GetAllCustomFields.cs | 0 .../GetCustomFieldsForLineItems.cs | 0 .../SetLineItemCustomFieldValue.cs | 0 .../CustomFieldService/UpdateCustomFields.cs | 0 .../CreateCustomTargetingKeysAndValues.cs | 0 .../GetAllCustomTargetingKeysAndValues.cs | 0 ...tPredefinedCustomTargetingKeysAndValues.cs | 0 .../UpdateCustomTargetingKeys.cs | 0 .../UpdateCustomTargetingValues.cs | 0 .../CreateExchangeRates.cs | 0 .../GetAllExchangeRates.cs | 0 .../GetExchangeRatesForCurrencyCode.cs | 0 .../UpdateExchangeRates.cs | 0 .../GetAvailabilityForecast.cs | 0 .../GetAvailabilityForecastById.cs | 0 .../GetDeliveryForecastByIds.cs | 0 .../v201705/InventoryService/CreateAdUnits.cs | 0 .../InventoryService/CreateVideoAdUnit.cs | 0 .../InventoryService/DeActivateAdUnits.cs | 0 .../InventoryService/GetAdUnitsByStatement.cs | 0 .../InventoryService/GetAllAdUnitSizes.cs | 0 .../v201705/InventoryService/GetAllAdUnits.cs | 0 .../InventoryService/GetInventoryTree.cs | 0 .../v201705/InventoryService/UpdateAdUnits.cs | 0 .../v201705/LabelService/CreateLabels.cs | 0 .../LabelService/DeactivateActiveLabels.cs | 0 .../v201705/LabelService/GetActiveLabels.cs | 0 .../v201705/LabelService/GetAllLabels.cs | 0 .../v201705/LabelService/UpdateLabels.cs | 0 .../ActivateLicas.cs | 0 .../CreateLicas.cs | 0 .../DeactivateLicas.cs | 0 .../GetAllLicas.cs | 0 .../GetLicasForLineItem.cs | 0 .../UpdateLicas.cs | 0 .../LineItemService/ActivateLineItem.cs | 0 .../LineItemService/CreateLineItems.cs | 0 .../LineItemService/CreateVideoLineItem.cs | 0 .../LineItemService/GetAllLineItems.cs | 0 .../GetLineItemsThatNeedCreatives.cs | 0 .../GetRecentlyUpdatedLineItems.cs | 0 .../LineItemService/TargetCustomCriteria.cs | 0 .../LineItemService/UpdateLineItems.cs | 0 .../NativeStyleService/CreateNativeStyles.cs | 0 .../NativeStyleService/GetAllNativeStyles.cs | 0 .../v201705/NetworkService/GetAllNetworks.cs | 0 .../NetworkService/GetCurrentNetwork.cs | 0 .../v201705/NetworkService/MakeTestNetwork.cs | 0 .../v201705/OrderService/ApproveOrder.cs | 0 .../v201705/OrderService/CreateOrders.cs | 0 .../v201705/OrderService/GetAllOrders.cs | 0 .../OrderService/GetOrdersStartingSoon.cs | 0 .../v201705/OrderService/UpdateOrders.cs | 0 .../v201705/PackageService/CreatePackages.cs | 0 .../CreateProposalLineItemsFromPackage.cs | 0 .../v201705/PackageService/GetAllPackages.cs | 0 .../PackageService/GetInProgressPackages.cs | 0 .../v201705/PackageService/UpdatePackages.cs | 0 .../PlacementService/CreatePlacements.cs | 0 .../PlacementService/DeactivatePlacement.cs | 0 .../PlacementService/GetActivePlacements.cs | 0 .../PlacementService/GetAllPlacements.cs | 0 .../PlacementService/UpdatePlacements.cs | 0 .../PremiumRateService/CreatePremiumRates.cs | 0 .../PremiumRateService/GetAllPremiumRates.cs | 0 .../GetPremiumRatesForRateCard.cs | 0 .../PremiumRateService/UpdatePremiumRates.cs | 0 .../GetAllProductPackageItems.cs | 0 ...GetProductPackageItemsForProductPackage.cs | 0 .../ActivateProductPackage.cs | 0 .../CreateProductPackages.cs | 0 .../GetActiveProductPackages.cs | 0 .../GetAllProductPackages.cs | 0 .../UpdateProductPackages.cs | 0 ...ogrammaticProductsForNonSalesManagement.cs | 0 .../v201705/ProductService/GetAllProducts.cs | 0 .../GetProductsForProductTemplate.cs | 0 ...ublishProgrammaticProductsToMarketplace.cs | 0 .../v201705/ProductService/UpdateProducts.cs | 0 .../ActivateProductTemplates.cs | 0 .../CreateProductTemplates.cs | 0 .../CreateProgrammaticProductTemplates.cs | 0 .../GetAllProductTemplates.cs | 0 .../GetSponsorshipProductTemplates.cs | 0 .../UpdateProductTemplates.cs | 0 .../ArchiveProposalLineItems.cs | 0 .../CreateProgrammaticProposalLineItems.cs | 0 ...cProposalLineItemsForNonSalesManagement.cs | 0 .../CreateProposalLineItems.cs | 0 .../GetAllProposalLineItems.cs | 0 .../GetProposalLineItemsForProposal.cs | 0 .../UpdateProposalLineItems.cs | 0 .../CreateProgrammaticProposals.cs | 0 ...grammaticProposalsForNonSalesManagement.cs | 0 .../ProposalService/CreateProposals.cs | 0 .../ProposalService/GetAllProposals.cs | 0 .../ProposalService/GetMarketplaceComments.cs | 0 .../GetProposalsPendingApproval.cs | 0 .../ProposalService/RequestBuyerAcceptance.cs | 0 .../SubmitProposalsForApproval.cs | 0 .../ProposalService/UpdateProposals.cs | 0 .../FetchMatchTables.cs | 0 .../GetAllLineItemsUsingPql.cs | 0 .../GetAllProgrammaticBuyers.cs | 0 .../GetGeoTargets.cs | 0 .../GetLineItemsNamedLike.cs | 0 .../GetRecentChanges.cs | 0 .../RateCardService/GetAllRateCards.cs | 0 .../GetMarketplaceRateCards.cs | 0 ...nLineItemReportsForReconciliationReport.cs | 0 ...tionOrderReportsForReconciliationReport.cs | 0 ...iationReportRowsForReconciliationReport.cs | 0 .../GetAllReconciliationReports.cs | 0 ...econciliationReportForLastBillingPeriod.cs | 0 .../ReportService/RunDeliveryReport.cs | 0 .../ReportService/RunInventoryReport.cs | 0 .../v201705/ReportService/RunReachReport.cs | 0 .../RunReportWithCustomFields.cs | 0 .../v201705/ReportService/RunSalesReport.cs | 0 .../v201705/ReportService/RunSavedQuery.cs | 0 .../ApproveSuggestedAdUnits.cs | 0 .../GetAllSuggestedAdUnits.cs | 0 .../GetHighlyRequestedSuggestedAdUnits.cs | 0 .../CSharp/v201705/TeamService/CreateTeams.cs | 0 .../CSharp/v201705/TeamService/GetAllTeams.cs | 0 .../CSharp/v201705/TeamService/UpdateTeams.cs | 0 .../CSharp/v201705/UserService/CreateUsers.cs | 0 .../v201705/UserService/DeactivateUser.cs | 0 .../CSharp/v201705/UserService/GetAllRoles.cs | 0 .../CSharp/v201705/UserService/GetAllUsers.cs | 0 .../v201705/UserService/GetCurrentUser.cs | 0 .../UserService/GetUserByEmailAddress.cs | 0 .../CSharp/v201705/UserService/UpdateUsers.cs | 0 .../CreateUserTeamAssociations.cs | 0 .../DeleteUserTeamAssociations.cs | 0 .../GetAllUserTeamAssociations.cs | 0 .../GetUserTeamAssociationsForUser.cs | 0 .../UpdateUserTeamAssociations.cs | 0 .../ApproveWorkflowApprovalRequests.cs | 0 .../GetWorkflowApprovalRequests.cs | 0 .../GetWorkflowExternalConditionRequests.cs | 0 ...riggerWorkflowExternalConditionRequests.cs | 0 .../BouncyCastle/BouncyCastle.Crypto.dll | Bin {adwords/lib => lib}/BouncyCastle/license.txt | 0 {adwords/lib => lib}/NUnit/license.txt | 0 .../lib => lib}/NUnit/nunit.framework.dll | Bin {adwords/src => src}/AdWords/AdWords.csproj | 0 .../AdWords/AdWordsErrorMessages.Designer.cs | 0 .../AdWords/AdWordsErrorMessages.resx | 0 {adwords/src => src}/AdWords/App.config | 0 .../AdWords/Headers/AdWordsSoapHeader.cs | 0 .../AdWords/Headers/RequestHeader.cs | 0 .../AdWords/Headers/RequestHeaderStub.cs | 0 .../AdWords/Headers/ResponseHeader.cs | 0 .../AdWords/Headers/ResponseHeaderStub.cs | 0 .../AdWords/Lib/AdWordsApiException.cs | 0 .../AdWords/Lib/AdWordsAppConfig.cs | 0 .../AdWords/Lib/AdWordsCallListener.cs | 0 .../AdWords/Lib/AdWordsException.cs | 0 .../src => src}/AdWords/Lib/AdWordsService.cs | 0 .../AdWords/Lib/AdWordsServiceFactory.cs | 0 .../AdWords/Lib/AdWordsServiceSignature.cs | 0 .../AdWords/Lib/AdWordsSoapClient.cs | 0 .../AdWords/Lib/AdWordsTraceListener.cs | 0 .../src => src}/AdWords/Lib/AdWordsUser.cs | 0 .../src => src}/AdWords/Lib/ApiCallEntry.cs | 0 .../AdWords/Properties/AssemblyInfo.cs | 0 .../AdWords/Properties/Properties.cs | 0 .../BatchJob/AdWordsBulkRequestException.cs | 0 .../Util/BatchJob/BatchJobUtilitiesBase.cs | 0 .../Util/BatchJob/BatchUploadProgress.cs | 0 .../Util/BatchJob/BulkJobErrorHandler.cs | 0 .../Util/BatchJob/CloudStorageError.cs | 0 .../Util/BatchJob/CloudStorageErrorDetail.cs | 0 .../BatchJob/CloudStorageErrorResponse.cs | 0 .../BatchJob/v201609/BatchJobUtilities.cs | 0 .../BatchJob/v201702/BatchJobUtilities.cs | 0 .../BatchJob/v201705/BatchJobUtilities.cs | 0 .../Util/Reports/AdWordsReportsException.cs | 0 .../AdWords/Util/Reports/IReportDefinition.cs | 0 .../Util/Reports/IReportDefinitionField.cs | 0 .../AdWords/Util/Reports/Parser/AwReport.cs | 0 .../Util/Reports/Parser/AwXmlTextReader.cs | 0 .../Util/Reports/Parser/ColumnValuePair.cs | 0 .../Util/Reports/Parser/InputTextReader.cs | 0 .../Util/Reports/Parser/ReportColumn.cs | 0 .../Util/Reports/Parser/ReportParserUtils.cs | 0 .../Util/Reports/ReportDownloadError.cs | 0 .../AdWords/Util/Reports/ReportUtilities.cs | 0 .../Reports/v201609/PredefinedReportTypes.cs | 0 .../Reports/v201702/PredefinedReportTypes.cs | 0 .../Reports/v201705/PredefinedReportTypes.cs | 0 .../AdWords/Util/Selectors/BaseFields.cs | 0 .../AdWords/Util/Selectors/Field.cs | 0 .../Util/Shopping/BiddableUnitState.cs | 0 .../Util/Shopping/ExcludedUnitState.cs | 0 .../AdWords/Util/Shopping/NodeDifference.cs | 0 .../AdWords/Util/Shopping/NodeState.cs | 0 .../AdWords/Util/Shopping/NodeType.cs | 0 .../Shopping/ShoppingMessages.Designer.cs | 0 .../Util/Shopping/ShoppingMessages.resx | 0 .../AdWords/Util/Shopping/SubdivisionState.cs | 0 .../Util/Shopping/v201609/OperationPair.cs | 0 .../ProductDimensionEqualityComparer.cs | 0 .../Shopping/v201609/ProductDimensions.cs | 0 .../Shopping/v201609/ProductPartitionNode.cs | 0 .../v201609/ProductPartitionNodeAdapter.cs | 0 .../Shopping/v201609/ProductPartitionTree.cs | 0 .../Util/Shopping/v201702/OperationPair.cs | 0 .../ProductDimensionEqualityComparer.cs | 0 .../Shopping/v201702/ProductDimensions.cs | 0 .../Shopping/v201702/ProductPartitionNode.cs | 0 .../v201702/ProductPartitionNodeAdapter.cs | 0 .../Shopping/v201702/ProductPartitionTree.cs | 0 .../Util/Shopping/v201705/OperationPair.cs | 0 .../ProductDimensionEqualityComparer.cs | 0 .../Shopping/v201705/ProductDimensions.cs | 0 .../Shopping/v201705/ProductPartitionNode.cs | 0 .../v201705/ProductPartitionNodeAdapter.cs | 0 .../Shopping/v201705/ProductPartitionTree.cs | 0 .../AdWords/Util/v201609/MapUtilities.cs | 0 .../AdWords/Util/v201702/MapUtilities.cs | 0 .../AdWords/Util/v201705/MapUtilities.cs | 0 .../v201609/AdWordsApi.ProductDimension.cs | 0 .../src => src}/AdWords/v201609/AdWordsApi.cs | 0 .../AdWords/v201609/AdWordsServiceV201609.cs | 0 .../src => src}/AdWords/v201609/ApiError.cs | 0 .../AdWords/v201609/ApiException.cs | 0 .../AdWords/v201609/BatchJobApi.cs | 0 .../AdWords/v201609/FeedValidationErrors.cs | 0 .../src => src}/AdWords/v201609/OrderBy.cs | 0 .../src => src}/AdWords/v201609/Paging.cs | 0 .../src => src}/AdWords/v201609/Predicate.cs | 0 .../AdWords/v201609/ReportDefinition.cs | 0 .../v201702/AdWordsApi.ProductDimension.cs | 0 .../src => src}/AdWords/v201702/AdWordsApi.cs | 0 .../AdWords/v201702/AdWordsServiceV201702.cs | 0 .../src => src}/AdWords/v201702/ApiError.cs | 0 .../AdWords/v201702/ApiException.cs | 0 .../AdWords/v201702/BatchJobApi.cs | 0 .../AdWords/v201702/FeedValidationErrors.cs | 0 .../src => src}/AdWords/v201702/OrderBy.cs | 0 .../src => src}/AdWords/v201702/Paging.cs | 0 .../src => src}/AdWords/v201702/Predicate.cs | 0 .../AdWords/v201702/ReportDefinition.cs | 0 .../v201705/AdWordsApi.ProductDimension.cs | 0 .../src => src}/AdWords/v201705/AdWordsApi.cs | 0 .../AdWords/v201705/AdWordsServiceV201705.cs | 0 .../src => src}/AdWords/v201705/ApiError.cs | 0 .../AdWords/v201705/ApiException.cs | 0 .../AdWords/v201705/BatchJobApi.cs | 0 .../AdWords/v201705/FeedValidationErrors.cs | 0 .../src => src}/AdWords/v201705/OrderBy.cs | 0 .../src => src}/AdWords/v201705/Paging.cs | 0 .../src => src}/AdWords/v201705/Predicate.cs | 0 .../AdWords/v201705/ReportDefinition.cs | 0 {adwords/src => src}/Common/AdsApi.snk | Bin {adwords/src => src}/Common/Common.csproj | 0 .../Common/CommonErrorMessages.Designer.cs | 0 .../Common/CommonErrorMessages.resx | 0 {adwords/src => src}/Common/Lib/AdsClient.cs | 0 .../src => src}/Common/Lib/AdsException.cs | 0 .../Common/Lib/AdsOAuthException.cs | 0 .../Common/Lib/AdsOAuthProvider.cs | 0 .../Lib/AdsOAuthProviderForApplications.cs | 0 .../Lib/AdsOAuthProviderForServiceAccounts.cs | 0 {adwords/src => src}/Common/Lib/AdsService.cs | 0 .../src => src}/Common/Lib/AdsSoapClient.cs | 0 {adwords/src => src}/Common/Lib/AdsUser.cs | 0 {adwords/src => src}/Common/Lib/AppConfig.cs | 0 .../src => src}/Common/Lib/AppConfigBase.cs | 0 .../src => src}/Common/Lib/Configurable.cs | 0 .../src => src}/Common/Lib/ContextStore.cs | 0 .../src => src}/Common/Lib/ErrorHandler.cs | 0 .../Common/Lib/OAuth2JwtClaimset.cs | 0 .../Common/Lib/OAuth2JwtClaimsetBuilder.cs | 0 .../Common/Lib/OAuth2ProviderBase.cs | 0 .../Lib/OAuth2ProviderForApplications.cs | 0 .../Lib/OAuth2ProviderForServiceAccounts.cs | 0 .../src => src}/Common/Lib/ServiceFactory.cs | 0 .../Common/Lib/ServiceSignature.cs | 0 .../src => src}/Common/Lib/SoapHeaderBase.cs | 0 .../Common/Logging/AdsFeatureUsageRegistry.cs | 0 .../Common/Logging/DefaultBodyFormatter.cs | 0 .../Common/Logging/JsonBodyFormatter.cs | 0 .../Logging/KeyValueMessageFormatter.cs | 0 .../src => src}/Common/Logging/LogEntry.cs | 0 .../src => src}/Common/Logging/RequestInfo.cs | 0 .../Common/Logging/ResponseInfo.cs | 0 .../Common/Logging/SoapListener.cs | 0 .../Common/Logging/SoapListenerExtension.cs | 0 .../Logging/SoapListenerExtensionAttribute.cs | 0 .../Common/Logging/SoapMessageDirection.cs | 0 .../Common/Logging/SoapTraceFormatter.cs | 0 .../Common/Logging/TraceFormatter.cs | 0 .../Common/Logging/TraceListener.cs | 0 .../Common/Logging/UrlEncodedBodyFormatter.cs | 0 .../Common/Properties/AssemblyInfo.cs | 0 .../Common/Properties/Properties.cs | 0 .../Common/Util/CollectionUtilities.cs | 0 .../src => src}/Common/Util/CsvException.cs | 0 {adwords/src => src}/Common/Util/CsvFile.cs | 0 .../Common/Util/DateTimeProvider.cs | 0 .../Common/Util/DefaultDateTimeProvider.cs | 0 .../Common/Util/DeprecationUtilities.cs | 0 .../src => src}/Common/Util/HttpUtilities.cs | 0 .../src => src}/Common/Util/MediaUtilities.cs | 0 .../Common/Util/PreconditionUtilities.cs | 0 .../Common/Util/Reports/AdsReportUtilities.cs | 0 .../Common/Util/Reports/ReportResponse.cs | 0 .../Common/Util/Reports/ReportsException.cs | 0 .../Common/Util/SerializationUtilities.cs | 0 .../Common/Util/TemporaryIdGenerator.cs | 0 .../src => src}/Common/Util/TraceUtilities.cs | 0 .../src => src}/Common/Util/XmlUtilities.cs | 0 {dfp/src => src}/Dfp/App.config | 0 {dfp/src => src}/Dfp/Dfp.csproj | 0 .../Dfp/DfpErrorMessages.Designer.cs | 0 {dfp/src => src}/Dfp/DfpErrorMessages.resx | 0 {dfp/src => src}/Dfp/Headers/DfpSoapHeader.cs | 0 {dfp/src => src}/Dfp/Headers/RequestHeader.cs | 0 .../Dfp/Headers/RequestHeaderStub.cs | 0 .../src => src}/Dfp/Headers/ResponseHeader.cs | 0 .../Dfp/Headers/ResponseHeaderStub.cs | 0 {dfp/src => src}/Dfp/Lib/DfpApiException.cs | 0 {dfp/src => src}/Dfp/Lib/DfpAppConfig.cs | 0 .../Dfp/Lib/DfpAuthorizationMethod.cs | 0 {dfp/src => src}/Dfp/Lib/DfpException.cs | 0 {dfp/src => src}/Dfp/Lib/DfpService.cs | 0 {dfp/src => src}/Dfp/Lib/DfpServiceFactory.cs | 0 .../Dfp/Lib/DfpServiceSignature.cs | 0 {dfp/src => src}/Dfp/Lib/DfpSoapClient.cs | 0 {dfp/src => src}/Dfp/Lib/DfpTraceListener.cs | 0 {dfp/src => src}/Dfp/Lib/DfpUser.cs | 0 .../Dfp/Properties/AssemblyInfo.cs | 0 {dfp/src => src}/Dfp/Properties/Properties.cs | 0 .../Dfp/Util/v201608/DateTimeUtilities.cs | 0 .../Dfp/Util/v201608/PqlUtilities.cs | 0 .../Dfp/Util/v201608/ReportUtilities.cs | 0 .../Dfp/Util/v201608/StatementBuilder.cs | 0 .../Dfp/Util/v201611/DateTimeUtilities.cs | 0 .../Dfp/Util/v201611/PqlUtilities.cs | 0 .../Dfp/Util/v201611/ReportUtilities.cs | 0 .../Dfp/Util/v201611/StatementBuilder.cs | 0 .../Dfp/Util/v201702/DateTimeUtilities.cs | 0 .../Dfp/Util/v201702/PqlUtilities.cs | 0 .../Dfp/Util/v201702/ReportUtilities.cs | 0 .../Dfp/Util/v201702/StatementBuilder.cs | 0 .../Dfp/Util/v201705/DateTimeUtilities.cs | 0 .../Dfp/Util/v201705/PqlUtilities.cs | 0 .../Dfp/Util/v201705/ReportUtilities.cs | 0 .../Dfp/Util/v201705/StatementBuilder.cs | 0 {dfp/src => src}/Dfp/v201608/DfpApi.cs | 0 .../Dfp/v201608/DfpServiceV201608.cs | 0 {dfp/src => src}/Dfp/v201611/DfpApi.cs | 0 .../Dfp/v201611/DfpServiceV201611.cs | 0 {dfp/src => src}/Dfp/v201702/DfpApi.cs | 0 .../Dfp/v201702/DfpServiceV201702.cs | 0 {dfp/src => src}/Dfp/v201705/DfpApi.cs | 0 .../Dfp/v201705/DfpServiceV201705.cs | 0 .../AdWords/AdWords.Tests.csproj | 0 .../AdWords/AdWordsRequestInterceptor.cs | 0 {adwords/tests => tests}/AdWords/App.config | 0 .../AdWords/EnumIntegrityTests.cs | 0 .../AdWords/ExampleTestsBase.cs | 0 .../AdWords/ExamplesMockData.cs | 0 .../AdWords/Lib/AdWordsAppConfigTest.cs | 0 .../AdWords/Lib/AdWordsCallListenerTest.cs | 0 .../AdWords/Lib/AdWordsServiceFactoryTests.cs | 0 .../tests => tests}/AdWords/MockUtilities.cs | 0 .../AdWords/MockedExampleTestsBase.cs | 0 .../AdWords/Properties/AssemblyInfo.cs | 0 .../AdWords/Properties/Properties.cs | 0 .../Resources/UpdateCampaign.v201609.txt | 0 .../Resources/UpdateCampaign.v201702.txt | 0 .../Resources/UpdateCampaign.v201705.txt | 0 .../AdWords/ServiceCreationTests.cs | 0 .../AdWords/SoapMessages.v201609.Designer.cs | 0 .../AdWords/SoapMessages.v201609.resx | 0 .../AdWords/SoapMessages.v201702.Designer.cs | 0 .../AdWords/SoapMessages.v201702.resx | 0 .../AdWords/SoapMessages.v201705.Designer.cs | 0 .../AdWords/SoapMessages.v201705.resx | 0 .../BatchJob/v201609/BatchJobUtilitiesTest.cs | 0 .../BatchJob/v201702/BatchJobUtilitiesTest.cs | 0 .../BatchJob/v201705/BatchJobUtilitiesTest.cs | 0 .../Util/Reports/Parser/AwReportTest.cs | 0 .../Reports/Parser/InputTextReaderTest.cs | 0 .../Reports/Parser/ReportParserUtilsTest.cs | 0 .../Util/Reports/Parser/Resources.Designer.cs | 0 .../Util/Reports/Parser/Resources.resx | 0 .../Reports/Parser/Resources/FaultyXML.xml | 0 .../Parser/Resources/ValidXMLDistinctRows.xml | 0 .../Parser/Resources/ValidXMLRepeatedRows.xml | 0 .../AdWords/Util/Reports/Parser/TestUtils.cs | 0 .../ProductDimensionEqualityComparerTest.cs | 0 .../Shopping/v201609/ProductDimensionsTest.cs | 0 .../v201609/ProductPartitionNodeTest.cs | 0 .../ProductPartitionTreeIntegrationTests.cs | 0 .../v201609/ProductPartitionTreeTest.cs | 0 .../ProductDimensionEqualityComparerTest.cs | 0 .../Shopping/v201702/ProductDimensionsTest.cs | 0 .../v201702/ProductPartitionNodeTest.cs | 0 .../ProductPartitionTreeIntegrationTests.cs | 0 .../v201702/ProductPartitionTreeTest.cs | 0 .../ProductDimensionEqualityComparerTest.cs | 0 .../Shopping/v201705/ProductDimensionsTest.cs | 0 .../v201705/ProductPartitionNodeTest.cs | 0 .../ProductPartitionTreeIntegrationTests.cs | 0 .../v201705/ProductPartitionTreeTest.cs | 0 .../AdWords/Util/v201609/MapUtilitiesTest.cs | 0 .../AdWords/Util/v201702/MapUtilitiesTest.cs | 0 .../AdWords/Util/v201705/MapUtilitiesTest.cs | 0 .../AdWords/v201609/AccountManagementTest.cs | 0 .../AdWords/v201609/AdvancedOperationsTest.cs | 0 .../AdWords/v201609/BasicOperationsTest.cs | 0 .../AdWords/v201609/CampaignManagementTest.cs | 0 .../AdWords/v201609/ErrorHandlingTest.cs | 0 .../AdWords/v201609/ExtensionsTest.cs | 0 .../AdWords/v201609/MigrationTest.cs | 0 .../AdWords/v201609/MiscellaneousTest.cs | 0 .../AdWords/v201609/MockTests.cs | 0 .../AdWords/v201609/OptimizationTest.cs | 0 .../AdWords/v201609/RemarketingTest.cs | 0 .../AdWords/v201609/ReportingTest.cs | 0 .../AdWords/v201609/ShoppingCampaignsTest.cs | 0 .../AdWords/v201609/ShoppingTestUtils.cs | 0 .../AdWords/v201609/TargetingTest.cs | 0 .../AdWords/v201609/TestUtils.cs | 0 .../v201609/VersionedExampleTestsBase.cs | 0 .../VersionedMockedExampleTestsBase.cs | 0 .../AdWords/v201702/AccountManagementTest.cs | 0 .../AdWords/v201702/AdvancedOperationsTest.cs | 0 .../AdWords/v201702/BasicOperationsTest.cs | 0 .../AdWords/v201702/CampaignManagementTest.cs | 0 .../AdWords/v201702/ErrorHandlingTest.cs | 0 .../AdWords/v201702/ExtensionsTest.cs | 0 .../AdWords/v201702/MigrationTest.cs | 0 .../AdWords/v201702/MiscellaneousTest.cs | 0 .../AdWords/v201702/MockTests.cs | 0 .../AdWords/v201702/OptimizationTest.cs | 0 .../AdWords/v201702/RemarketingTest.cs | 0 .../AdWords/v201702/ReportingTest.cs | 0 .../AdWords/v201702/ShoppingCampaignsTest.cs | 0 .../AdWords/v201702/ShoppingTestUtils.cs | 0 .../AdWords/v201702/TargetingTest.cs | 0 .../AdWords/v201702/TestUtils.cs | 0 .../v201702/VersionedExampleTestsBase.cs | 0 .../VersionedMockedExampleTestsBase.cs | 0 .../AdWords/v201705/AccountManagementTest.cs | 0 .../AdWords/v201705/AdvancedOperationsTest.cs | 0 .../AdWords/v201705/BasicOperationsTest.cs | 0 .../AdWords/v201705/CampaignManagementTest.cs | 0 .../AdWords/v201705/ErrorHandlingTest.cs | 0 .../AdWords/v201705/ExtensionsTest.cs | 0 .../AdWords/v201705/MigrationTest.cs | 0 .../AdWords/v201705/MiscellaneousTest.cs | 0 .../AdWords/v201705/MockTests.cs | 0 .../AdWords/v201705/OptimizationTest.cs | 0 .../AdWords/v201705/RemarketingTest.cs | 0 .../AdWords/v201705/ReportingTest.cs | 0 .../AdWords/v201705/ShoppingCampaignsTest.cs | 0 .../AdWords/v201705/ShoppingTestUtils.cs | 0 .../AdWords/v201705/TargetingTest.cs | 0 .../AdWords/v201705/TestUtils.cs | 0 .../v201705/VersionedExampleTestsBase.cs | 0 .../VersionedMockedExampleTestsBase.cs | 0 .../Common/Common.Tests.csproj | 0 .../tests => tests}/Common/HttpMessage.cs | 0 .../Common/Lib/AdsExceptionTests.cs | 0 .../Common/Lib/AdsOAuthExceptionTests.cs | 0 .../Common/Lib/AppConfigBaseTests.cs | 0 .../Common/Lib/OAuth2JwtClaimsetTests.cs | 0 .../Lib/OAuth2ProviderForApplicationsTests.cs | 0 .../OAuth2ProviderForServiceAccountsTests.cs | 0 .../Common/Lib/ServiceFactoryTests.cs | 0 .../Common/Lib/ServiceSignatureTests.cs | 0 .../Logging/DefaultBodyFormatterTests.cs | 0 .../Common/Logging/JsonBodyFormatterTests.cs | 0 .../Logging/KeyValueMessageFormatterTests.cs | 0 .../Common/Logging/SoapTraceFormatterTests.cs | 0 .../Common/Logging/TraceHelperTests.cs | 0 .../Common/Logging/TraceListenerTests.cs | 0 .../Logging/UrlEncodedBodyFormatterTests.cs | 0 .../tests => tests}/Common/MockWebRequest.cs | 0 .../tests => tests}/Common/MockWebResponse.cs | 0 .../Common/Mocks/MockAdsClient.cs | 0 .../Common/Mocks/MockAdsException.cs | 0 .../Common/Mocks/MockAdsUser.cs | 0 .../Common/Mocks/MockAppConfig.cs | 0 .../Common/Mocks/MockDateTimeProvider.cs | 0 .../Common/Mocks/MockServiceFactory.cs | 0 .../Common/Mocks/MockServiceSignature.cs | 0 .../Common/Mocks/MockTraceListener.cs | 0 .../Common/OAuth2RequestInterceptor.cs | 0 .../Common/Resources.Designer.cs | 0 .../tests => tests}/Common/Resources.resx | 0 .../Common/Resources/certificate.p12 | Bin .../Common/Resources/secret.json | 0 .../Common/Resources/utf8bom.xml | 0 .../Common/StubIntegrityTestHelper.cs | 0 {adwords/tests => tests}/Common/TestUtils.cs | 0 .../Common/Util/CollectionUtilitiesTest.cs | 0 .../Common/Util/CsvFileTests.cs | 0 .../Common/Util/DeprecationUtilitiesTest.cs | 0 .../Common/Util/MediaUtilitiesTests.cs | 0 .../Util/Reports/ReportResponseTests.cs | 0 .../Common/Util/TemporaryIdGeneratorTests.cs | 0 .../Common/Util/TraceUtilitiesTest.cs | 0 .../Common/Util/XmlUtilitiesTest.cs | 0 .../Common/WebRequestInterceptor.cs | 0 {dfp/tests => tests}/Dfp/App.config | 0 {dfp/tests => tests}/Dfp/BaseTests.cs | 0 {dfp/tests => tests}/Dfp/Dfp.Tests.csproj | 0 .../tests => tests}/Dfp/EnumIntegrityTests.cs | 0 .../Dfp/Properties/AssemblyInfo.cs | 0 .../Dfp/Properties/Properties.cs | 0 .../Dfp/ServiceCreationTests.cs | 0 .../Dfp/v201608/DateTimeUtilitiesTests.cs | 0 .../Dfp/v201608/PqlUtilitiesTests.cs | 0 .../Dfp/v201608/StatementBuilderTests.cs | 0 .../Dfp/v201611/DateTimeUtilitiesTests.cs | 0 .../Dfp/v201611/PqlUtilitiesTests.cs | 0 .../Dfp/v201611/StatementBuilderTests.cs | 0 .../Dfp/v201702/DateTimeUtilitiesTests.cs | 0 .../Dfp/v201702/PqlUtilitiesTests.cs | 0 .../Dfp/v201702/StatementBuilderTests.cs | 0 .../Dfp/v201705/DateTimeUtilitiesTests.cs | 0 .../Dfp/v201705/PqlUtilitiesTests.cs | 0 .../Dfp/v201705/StatementBuilderTests.cs | 0 .../OAuthTokenGenerator/LocalWebServer.cs | 0 .../OAuthTokenGenerator/MainForm.Designer.cs | 0 .../OAuthTokenGenerator/MainForm.cs | 0 .../OAuthTokenGenerator/MainForm.resx | 0 .../OAuthTokenGenerator.csproj | 0 .../OAuthTokenGenerator/Program.cs | 0 .../Properties/AssemblyInfo.cs | 0 .../Properties/Properties.cs | 0 .../ResultDialog.Designer.cs | 0 .../OAuthTokenGenerator/ResultDialog.cs | 0 .../OAuthTokenGenerator/ResultDialog.resx | 0 1668 files changed, 15089 deletions(-) rename adwords/AdWords.sln => AdWords.sln (100%) rename adwords/ChangeLog => ChangeLog (100%) rename dfp/Dfp.sln => Dfp.sln (100%) rename adwords/LICENSE => LICENSE (100%) rename adwords/README.md => README.md (100%) delete mode 100755 dfp/ChangeLog delete mode 100755 dfp/LICENSE delete mode 100755 dfp/README.md delete mode 100755 dfp/lib/BouncyCastle/BouncyCastle.Crypto.dll delete mode 100755 dfp/lib/BouncyCastle/license.txt delete mode 100755 dfp/lib/NUnit/license.txt delete mode 100755 dfp/lib/NUnit/nunit.framework.dll delete mode 100755 dfp/src/Common/AdsApi.snk delete mode 100755 dfp/src/Common/Common.csproj delete mode 100755 dfp/src/Common/CommonErrorMessages.Designer.cs delete mode 100755 dfp/src/Common/CommonErrorMessages.resx delete mode 100755 dfp/src/Common/Lib/AdsClient.cs delete mode 100755 dfp/src/Common/Lib/AdsException.cs delete mode 100755 dfp/src/Common/Lib/AdsOAuthException.cs delete mode 100755 dfp/src/Common/Lib/AdsOAuthProvider.cs delete mode 100755 dfp/src/Common/Lib/AdsOAuthProviderForApplications.cs delete mode 100755 dfp/src/Common/Lib/AdsOAuthProviderForServiceAccounts.cs delete mode 100755 dfp/src/Common/Lib/AdsService.cs delete mode 100755 dfp/src/Common/Lib/AdsSoapClient.cs delete mode 100755 dfp/src/Common/Lib/AdsUser.cs delete mode 100755 dfp/src/Common/Lib/AppConfig.cs delete mode 100755 dfp/src/Common/Lib/AppConfigBase.cs delete mode 100755 dfp/src/Common/Lib/Configurable.cs delete mode 100755 dfp/src/Common/Lib/ContextStore.cs delete mode 100755 dfp/src/Common/Lib/ErrorHandler.cs delete mode 100755 dfp/src/Common/Lib/OAuth2JwtClaimset.cs delete mode 100755 dfp/src/Common/Lib/OAuth2JwtClaimsetBuilder.cs delete mode 100755 dfp/src/Common/Lib/OAuth2ProviderBase.cs delete mode 100755 dfp/src/Common/Lib/OAuth2ProviderForApplications.cs delete mode 100755 dfp/src/Common/Lib/OAuth2ProviderForServiceAccounts.cs delete mode 100755 dfp/src/Common/Lib/ServiceFactory.cs delete mode 100755 dfp/src/Common/Lib/ServiceSignature.cs delete mode 100755 dfp/src/Common/Lib/SoapHeaderBase.cs delete mode 100755 dfp/src/Common/Logging/AdsFeatureUsageRegistry.cs delete mode 100755 dfp/src/Common/Logging/DefaultBodyFormatter.cs delete mode 100755 dfp/src/Common/Logging/JsonBodyFormatter.cs delete mode 100755 dfp/src/Common/Logging/KeyValueMessageFormatter.cs delete mode 100755 dfp/src/Common/Logging/LogEntry.cs delete mode 100755 dfp/src/Common/Logging/RequestInfo.cs delete mode 100755 dfp/src/Common/Logging/ResponseInfo.cs delete mode 100755 dfp/src/Common/Logging/SoapListener.cs delete mode 100755 dfp/src/Common/Logging/SoapListenerExtension.cs delete mode 100755 dfp/src/Common/Logging/SoapListenerExtensionAttribute.cs delete mode 100755 dfp/src/Common/Logging/SoapMessageDirection.cs delete mode 100755 dfp/src/Common/Logging/SoapTraceFormatter.cs delete mode 100755 dfp/src/Common/Logging/TraceFormatter.cs delete mode 100755 dfp/src/Common/Logging/TraceListener.cs delete mode 100755 dfp/src/Common/Logging/UrlEncodedBodyFormatter.cs delete mode 100755 dfp/src/Common/Properties/AssemblyInfo.cs delete mode 100755 dfp/src/Common/Properties/Properties.cs delete mode 100755 dfp/src/Common/Util/CollectionUtilities.cs delete mode 100755 dfp/src/Common/Util/CsvException.cs delete mode 100755 dfp/src/Common/Util/CsvFile.cs delete mode 100755 dfp/src/Common/Util/DateTimeProvider.cs delete mode 100755 dfp/src/Common/Util/DefaultDateTimeProvider.cs delete mode 100755 dfp/src/Common/Util/DeprecationUtilities.cs delete mode 100755 dfp/src/Common/Util/HttpUtilities.cs delete mode 100755 dfp/src/Common/Util/MediaUtilities.cs delete mode 100755 dfp/src/Common/Util/PreconditionUtilities.cs delete mode 100755 dfp/src/Common/Util/Reports/AdsReportUtilities.cs delete mode 100755 dfp/src/Common/Util/Reports/ReportResponse.cs delete mode 100755 dfp/src/Common/Util/Reports/ReportsException.cs delete mode 100755 dfp/src/Common/Util/SerializationUtilities.cs delete mode 100755 dfp/src/Common/Util/TemporaryIdGenerator.cs delete mode 100755 dfp/src/Common/Util/TraceUtilities.cs delete mode 100755 dfp/src/Common/Util/XmlUtilities.cs delete mode 100755 dfp/tests/Common/Common.Tests.csproj delete mode 100755 dfp/tests/Common/HttpMessage.cs delete mode 100755 dfp/tests/Common/Lib/AdsExceptionTests.cs delete mode 100755 dfp/tests/Common/Lib/AdsOAuthExceptionTests.cs delete mode 100755 dfp/tests/Common/Lib/AppConfigBaseTests.cs delete mode 100755 dfp/tests/Common/Lib/OAuth2JwtClaimsetTests.cs delete mode 100755 dfp/tests/Common/Lib/OAuth2ProviderForApplicationsTests.cs delete mode 100755 dfp/tests/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs delete mode 100755 dfp/tests/Common/Lib/ServiceFactoryTests.cs delete mode 100755 dfp/tests/Common/Lib/ServiceSignatureTests.cs delete mode 100755 dfp/tests/Common/Logging/DefaultBodyFormatterTests.cs delete mode 100755 dfp/tests/Common/Logging/JsonBodyFormatterTests.cs delete mode 100755 dfp/tests/Common/Logging/KeyValueMessageFormatterTests.cs delete mode 100755 dfp/tests/Common/Logging/SoapTraceFormatterTests.cs delete mode 100755 dfp/tests/Common/Logging/TraceHelperTests.cs delete mode 100755 dfp/tests/Common/Logging/TraceListenerTests.cs delete mode 100755 dfp/tests/Common/Logging/UrlEncodedBodyFormatterTests.cs delete mode 100755 dfp/tests/Common/MockWebRequest.cs delete mode 100755 dfp/tests/Common/MockWebResponse.cs delete mode 100755 dfp/tests/Common/Mocks/MockAdsClient.cs delete mode 100755 dfp/tests/Common/Mocks/MockAdsException.cs delete mode 100755 dfp/tests/Common/Mocks/MockAdsUser.cs delete mode 100755 dfp/tests/Common/Mocks/MockAppConfig.cs delete mode 100755 dfp/tests/Common/Mocks/MockDateTimeProvider.cs delete mode 100755 dfp/tests/Common/Mocks/MockServiceFactory.cs delete mode 100755 dfp/tests/Common/Mocks/MockServiceSignature.cs delete mode 100755 dfp/tests/Common/Mocks/MockTraceListener.cs delete mode 100755 dfp/tests/Common/OAuth2RequestInterceptor.cs delete mode 100755 dfp/tests/Common/Resources.Designer.cs delete mode 100755 dfp/tests/Common/Resources.resx delete mode 100755 dfp/tests/Common/Resources/certificate.p12 delete mode 100755 dfp/tests/Common/Resources/secret.json delete mode 100755 dfp/tests/Common/Resources/utf8bom.xml delete mode 100755 dfp/tests/Common/StubIntegrityTestHelper.cs delete mode 100755 dfp/tests/Common/TestUtils.cs delete mode 100755 dfp/tests/Common/Util/CollectionUtilitiesTest.cs delete mode 100755 dfp/tests/Common/Util/CsvFileTests.cs delete mode 100755 dfp/tests/Common/Util/DeprecationUtilitiesTest.cs delete mode 100755 dfp/tests/Common/Util/MediaUtilitiesTests.cs delete mode 100755 dfp/tests/Common/Util/Reports/ReportResponseTests.cs delete mode 100755 dfp/tests/Common/Util/TemporaryIdGeneratorTests.cs delete mode 100755 dfp/tests/Common/Util/TraceUtilitiesTest.cs delete mode 100755 dfp/tests/Common/Util/XmlUtilitiesTest.cs delete mode 100755 dfp/tests/Common/WebRequestInterceptor.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/LocalWebServer.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/MainForm.Designer.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/MainForm.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/MainForm.resx delete mode 100755 dfp/utilities/OAuthTokenGenerator/OAuthTokenGenerator.csproj delete mode 100755 dfp/utilities/OAuthTokenGenerator/Program.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/Properties/AssemblyInfo.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/Properties/Properties.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/ResultDialog.Designer.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/ResultDialog.cs delete mode 100755 dfp/utilities/OAuthTokenGenerator/ResultDialog.resx rename {adwords/examples => examples}/AdWords/CSharp/AdWords.Examples.CSharp.csproj (100%) rename {adwords/examples => examples}/AdWords/CSharp/App.config (100%) rename {adwords/examples => examples}/AdWords/CSharp/ExampleBase.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/ExampleUtilities.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/AdWords.Examples.CSharp.OAuth.csproj (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/ConsoleExample.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/Default.aspx (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/Default.aspx.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/Default.aspx.designer.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/OAuthLogin.aspx (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/OAuthLogin.aspx.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/OAuthLogin.aspx.designer.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/Properties/AssemblyInfo.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/Properties/Properties.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/README.md (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/Web.config (100%) rename {adwords/examples => examples}/AdWords/CSharp/OAuth/css/main.css (100%) rename {adwords/examples => examples}/AdWords/CSharp/Program.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/Properties/AssemblyInfo.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/Properties/Properties.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AccountManagement/AcceptServiceLink.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AccountManagement/CreateAccount.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AccountManagement/GetAccountChanges.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AccountManagement/GetAccountHierarchy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/AddAdCustomizers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/AddAdGroupBidModifier.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/AddClickToDownloadAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/AddHtml5Ad.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/AddResponsiveDisplayAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/AddUniversalAppCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/GetAdGroupBidModifiers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/AddAdGroupDemographicCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/AddAdGroups.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/AddCampaigns.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/AddExpandedTextAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/AddKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/GetAdGroups.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/GetCampaigns.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/GetCampaignsWithAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/GetExpandedTextAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/GetKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/GetTextAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/PauseAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/RemoveAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/RemoveAdGroup.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/RemoveCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/RemoveKeyword.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/UpdateAdGroup.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/UpdateCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/BasicOperations/UpdateKeyword.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/AddCampaignLabels.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/AddDraft.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/AddTrial.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/GetCampaignsByLabel.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/GraduateTrial.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/SetAdParameters.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/SetBidModifier.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/CampaignManagement/ValidateTextAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/ErrorHandling/HandlePartialFailures.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/ErrorHandling/HandlePolicyViolationError.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/ErrorHandling/HandleRateExceededError.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Extensions/AddPrices.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Extensions/AddSitelinks.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Extensions/AddSitelinksUsingFeeds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Migration/MigrateToExtensionSettings.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Miscellaneous/GetAllVideosAndImages.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Miscellaneous/UploadImage.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Miscellaneous/UploadMediaBundle.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Optimization/EstimateKeywordTraffic.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Optimization/GetAdGroupBidSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Optimization/GetKeywordBidSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Optimization/GetKeywordIdeas.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Remarketing/AddAudience.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Remarketing/AddConversionTracker.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Remarketing/AddCrmBasedUserList.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Remarketing/AddRuleBasedRemarketingList.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Remarketing/UploadOfflineCallConversions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Remarketing/UploadOfflineConversions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReport.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReportWithAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Reporting/GetReportFields.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Reporting/ParallelReportDownload.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportResults.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportToPoco.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Reporting/StreamReportToPredefinedReportRowType.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductPartitionTree.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductScope.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/ShoppingCampaigns/AddShoppingCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/README.md (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Solutions/GetNewKeywords/GetNewKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Solutions/GetNewKeywords/README.md (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Targeting/AddCampaignTargetingCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Targeting/GetCampaignTargetingCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Targeting/GetTargetableLanguagesAndCarriers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201609/Targeting/LookupLocation.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AccountManagement/AcceptServiceLink.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AccountManagement/CreateAccount.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AccountManagement/GetAccountChanges.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AccountManagement/GetAccountHierarchy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/AddAdCustomizers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/AddAdGroupBidModifier.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/AddClickToDownloadAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/AddHtml5Ad.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/AddResponsiveDisplayAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/AddUniversalAppCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/GetAdGroupBidModifiers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/AddAdGroupDemographicCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/AddAdGroups.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/AddCampaigns.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/AddExpandedTextAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/AddKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/GetAdGroups.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/GetCampaigns.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/GetCampaignsWithAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/GetExpandedTextAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/GetKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/GetTextAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/PauseAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/RemoveAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/RemoveAdGroup.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/RemoveCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/RemoveKeyword.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/UpdateAdGroup.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/UpdateCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/BasicOperations/UpdateKeyword.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/AddCampaignLabels.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/AddDraft.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/AddTrial.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/GetCampaignsByLabel.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/GraduateTrial.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/SetAdParameters.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/SetBidModifier.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/CampaignManagement/ValidateTextAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/ErrorHandling/HandlePartialFailures.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/ErrorHandling/HandlePolicyViolationError.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/ErrorHandling/HandleRateExceededError.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Extensions/AddPrices.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Extensions/AddSitelinks.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Extensions/AddSitelinksUsingFeeds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Migration/MigrateToExtensionSettings.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Miscellaneous/GetAllVideosAndImages.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Miscellaneous/UploadImage.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Miscellaneous/UploadMediaBundle.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Optimization/EstimateKeywordTraffic.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Optimization/GetAdGroupBidSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Optimization/GetKeywordBidSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Optimization/GetKeywordIdeas.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Remarketing/AddAudience.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Remarketing/AddConversionTracker.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Remarketing/AddCrmBasedUserList.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Remarketing/AddRuleBasedRemarketingList.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Remarketing/UploadOfflineCallConversions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Remarketing/UploadOfflineConversions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithSelector.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Reporting/GetReportFields.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Reporting/ParallelReportDownload.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportResults.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportToPoco.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Reporting/StreamReportToPredefinedReportRowType.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductPartitionTree.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductScope.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/README.md (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Solutions/GetNewKeywords/GetNewKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Solutions/GetNewKeywords/README.md (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Targeting/AddCampaignTargetingCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Targeting/GetCampaignTargetingCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Targeting/GetTargetableLanguagesAndCarriers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201702/Targeting/LookupLocation.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AccountManagement/AcceptServiceLink.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AccountManagement/CreateAccount.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AccountManagement/GetAccountChanges.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AccountManagement/GetAccountHierarchy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddAdCustomizers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddAdGroupBidModifier.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddClickToDownloadAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicPageFeed.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddHtml5Ad.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddResponsiveDisplayAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/AddUniversalAppCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/GetAdGroupBidModifiers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/AddAdGroupDemographicCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/AddAdGroups.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/AddCampaigns.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/AddExpandedTextAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/AddKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/GetAdGroups.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/GetCampaigns.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/GetCampaignsWithAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/GetExpandedTextAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/GetKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/PauseAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/RemoveAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/RemoveAdGroup.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/RemoveCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/RemoveKeyword.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/UpdateAdGroup.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/UpdateCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/BasicOperations/UpdateKeyword.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/AddCampaignLabels.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/AddDraft.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/AddTrial.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/GetCampaignsByLabel.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/GraduateTrial.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/SetAdParameters.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/SetBidModifier.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/CampaignManagement/ValidateTextAd.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/ErrorHandling/HandlePartialFailures.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/ErrorHandling/HandlePolicyViolationError.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/ErrorHandling/HandleRateExceededError.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Extensions/AddPrices.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Extensions/AddSitelinks.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Extensions/AddSitelinksUsingFeeds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Migration/MigrateToExtensionSettings.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Miscellaneous/GetAllVideosAndImages.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Miscellaneous/UploadImage.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Miscellaneous/UploadMediaBundle.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Optimization/EstimateKeywordTraffic.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Optimization/GetAdGroupBidSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Optimization/GetKeywordBidSimulations.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Optimization/GetKeywordIdeas.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Remarketing/AddAudience.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Remarketing/AddConversionTracker.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Remarketing/AddCrmBasedUserList.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Remarketing/AddRuleBasedRemarketingList.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Remarketing/UploadOfflineCallConversions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Remarketing/UploadOfflineConversions.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithAwql.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithSelector.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Reporting/GetReportFields.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Reporting/ParallelReportDownload.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportResults.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportToPoco.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Reporting/StreamReportToPredefinedReportRowType.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductPartitionTree.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductScope.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaign.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/README.md (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Solutions/GetNewKeywords/GetNewKeywords.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Solutions/GetNewKeywords/README.md (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Targeting/AddCampaignTargetingCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Targeting/GetCampaignTargetingCriteria.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Targeting/GetTargetableLanguagesAndCarriers.cs (100%) rename {adwords/examples => examples}/AdWords/CSharp/v201705/Targeting/LookupLocation.cs (100%) rename {adwords/examples => examples}/AdWords/Vb/AdWords.Examples.VB.vbproj (100%) rename {adwords/examples => examples}/AdWords/Vb/App.config (100%) rename {adwords/examples => examples}/AdWords/Vb/ExampleBase.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/ExampleUtilities.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/Program.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/Properties/AssemblyInfo.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/Properties/Properties.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AccountManagement/AcceptServiceLink.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AccountManagement/CreateAccount.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AccountManagement/GetAccountChanges.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AccountManagement/GetAccountHierarchy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/AddAdCustomizers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/AddAdGroupBidModifier.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/AddClickToDownloadAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/AddHtml5Ad.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/AddResponsiveDisplayAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/AddUniversalAppCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/GetAdGroupBidModifiers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/AddAdGroupDemographicCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/AddAdGroups.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/AddCampaigns.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/AddExpandedTextAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/AddKeywords.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/GetAdGroups.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/GetCampaigns.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/GetCampaignsWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/GetExpandedTextAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/GetKeywords.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/GetTextAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/PauseAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/RemoveAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/RemoveAdGroup.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/RemoveCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/RemoveKeyword.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/UpdateAdGroup.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/UpdateCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/BasicOperations/UpdateKeyword.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/AddCampaignLabels.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/AddDraft.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/AddTrial.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/GetCampaignsByLabel.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/GraduateTrial.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/SetAdParameters.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/SetBidModifier.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/CampaignManagement/ValidateTextAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/ErrorHandling/HandlePartialFailures.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/ErrorHandling/HandlePolicyViolationError.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/ErrorHandling/HandleRateExceededError.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Extensions/AddPrices.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Extensions/AddSitelinks.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Extensions/AddSitelinksUsingFeeds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Migration/MigrateToExtensionSettings.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Miscellaneous/GetAllVideosAndImages.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Miscellaneous/UploadImage.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Miscellaneous/UploadMediaBundle.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Optimization/EstimateKeywordTraffic.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Optimization/GetAdGroupBidSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Optimization/GetKeywordBidSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Optimization/GetKeywordIdeas.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Remarketing/AddAudience.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Remarketing/AddConversionTracker.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Remarketing/AddCrmBasedUserList.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Remarketing/AddRuleBasedRemarketingList.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Remarketing/UploadOfflineCallConversions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Remarketing/UploadOfflineConversions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Reporting/DownloadCriteriaReport.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Reporting/DownloadCriteriaReportWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Reporting/GetReportFields.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Reporting/StreamCriteriaReportResults.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Reporting/StreamCriteriaReportToPoco.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Reporting/StreamReportToPredefinedReportRowType.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/ShoppingCampaigns/AddProductPartitionTree.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/ShoppingCampaigns/AddProductScope.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/ShoppingCampaigns/AddShoppingCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Targeting/AddCampaignTargetingCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Targeting/GetCampaignTargetingCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Targeting/GetTargetableLanguagesAndCarriers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201609/Targeting/LookupLocation.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AccountManagement/AcceptServiceLink.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AccountManagement/CreateAccount.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AccountManagement/GetAccountChanges.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AccountManagement/GetAccountHierarchy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/AddAdCustomizers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/AddAdGroupBidModifier.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/AddClickToDownloadAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/AddHtml5Ad.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/AddResponsiveDisplayAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/AddUniversalAppCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/GetAdGroupBidModifiers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/AddAdGroupDemographicCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/AddAdGroups.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/AddCampaigns.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/AddExpandedTextAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/AddKeywords.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/GetAdGroups.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/GetCampaigns.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/GetCampaignsWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/GetExpandedTextAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/GetKeywords.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/GetTextAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/PauseAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/RemoveAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/RemoveAdGroup.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/RemoveCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/RemoveKeyword.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/UpdateAdGroup.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/UpdateCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/BasicOperations/UpdateKeyword.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/AddCampaignLabels.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/AddDraft.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/AddTrial.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/GetCampaignsByLabel.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/GraduateTrial.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/SetAdParameters.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/SetBidModifier.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/CampaignManagement/ValidateTextAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/ErrorHandling/HandlePartialFailures.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/ErrorHandling/HandlePolicyViolationError.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/ErrorHandling/HandleRateExceededError.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Extensions/AddPrices.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Extensions/AddSitelinks.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Extensions/AddSitelinksUsingFeeds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Migration/MigrateToExtensionSettings.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Miscellaneous/GetAllVideosAndImages.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Miscellaneous/UploadImage.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Miscellaneous/UploadMediaBundle.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Optimization/EstimateKeywordTraffic.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Optimization/GetAdGroupBidSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Optimization/GetKeywordBidSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Optimization/GetKeywordIdeas.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Remarketing/AddAudience.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Remarketing/AddConversionTracker.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Remarketing/AddCrmBasedUserList.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Remarketing/AddRuleBasedRemarketingList.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Remarketing/UploadOfflineCallConversions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Remarketing/UploadOfflineConversions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithSelector.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Reporting/GetReportFields.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Reporting/StreamCriteriaReportResults.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Reporting/StreamCriteriaReportToPoco.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Reporting/StreamReportToPredefinedReportRowType.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/ShoppingCampaigns/AddProductPartitionTree.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/ShoppingCampaigns/AddProductScope.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Targeting/AddCampaignTargetingCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Targeting/GetCampaignTargetingCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Targeting/GetTargetableLanguagesAndCarriers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201702/Targeting/LookupLocation.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AccountManagement/AcceptServiceLink.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AccountManagement/CreateAccount.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AccountManagement/GetAccountChanges.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AccountManagement/GetAccountHierarchy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddAdCustomizers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddAdGroupBidModifier.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddClickToDownloadAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddDynamicPageFeed.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddHtml5Ad.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddResponsiveDisplayAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/AddUniversalAppCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/GetAdGroupBidModifiers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/AddAdGroupDemographicCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/AddAdGroups.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/AddCampaigns.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/AddExpandedTextAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/AddKeywords.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/GetAdGroups.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/GetCampaigns.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/GetCampaignsWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/GetExpandedTextAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/GetKeywords.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/PauseAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/RemoveAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/RemoveAdGroup.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/RemoveCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/RemoveKeyword.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/UpdateAdGroup.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/UpdateCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/BasicOperations/UpdateKeyword.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/AddCampaignLabels.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/AddDraft.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/AddTrial.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/GetCampaignsByLabel.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/GraduateTrial.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/SetAdParameters.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/SetBidModifier.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/CampaignManagement/ValidateTextAd.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/ErrorHandling/HandlePartialFailures.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/ErrorHandling/HandlePolicyViolationError.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/ErrorHandling/HandleRateExceededError.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Extensions/AddPrices.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Extensions/AddSitelinks.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Extensions/AddSitelinksUsingFeeds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Migration/MigrateToExtensionSettings.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Miscellaneous/GetAllVideosAndImages.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Miscellaneous/UploadImage.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Miscellaneous/UploadMediaBundle.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Optimization/EstimateKeywordTraffic.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Optimization/GetAdGroupBidSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Optimization/GetKeywordBidSimulations.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Optimization/GetKeywordIdeas.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Remarketing/AddAudience.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Remarketing/AddConversionTracker.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Remarketing/AddCrmBasedUserList.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Remarketing/AddRuleBasedRemarketingList.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Remarketing/UploadOfflineCallConversions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Remarketing/UploadOfflineConversions.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithAwql.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithSelector.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Reporting/GetReportFields.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Reporting/StreamCriteriaReportResults.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Reporting/StreamCriteriaReportToPoco.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Reporting/StreamReportToPredefinedReportRowType.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/ShoppingCampaigns/AddProductPartitionTree.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/ShoppingCampaigns/AddProductScope.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaign.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Targeting/AddCampaignTargetingCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Targeting/GetCampaignTargetingCriteria.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Targeting/GetTargetableLanguagesAndCarriers.vb (100%) rename {adwords/examples => examples}/AdWords/Vb/v201705/Targeting/LookupLocation.vb (100%) rename {dfp/examples => examples}/Dfp/CSharp/App.config (100%) rename {dfp/examples => examples}/Dfp/CSharp/Dfp.Examples.CSharp.csproj (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/ConsoleExample.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/Default.aspx (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/Default.aspx.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/Default.aspx.designer.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/Dfp.Examples.CSharp.OAuth.csproj (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/OAuthLogin.aspx (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/OAuthLogin.aspx.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/OAuthLogin.aspx.designer.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/Properties/AssemblyInfo.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/Properties/Properties.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/README.md (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/Web.config (100%) rename {dfp/examples => examples}/Dfp/CSharp/OAuth/css/main.css (100%) rename {dfp/examples => examples}/Dfp/CSharp/Program.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/Properties/AssemblyInfo.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/Properties/Properties.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/SampleBase.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ActivityGroupService/CreateActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ActivityGroupService/GetActiveActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ActivityGroupService/GetAllActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ActivityGroupService/UpdateActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ActivityService/CreateActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ActivityService/GetActiveActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ActivityService/GetAllActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ActivityService/UpdateActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/AudienceSegmentService/CreateAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/AudienceSegmentService/GetAllAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/AudienceSegmentService/GetFirstPartyAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/AudienceSegmentService/UpdateAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/BaseRateService/CreateProductBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/BaseRateService/CreateProductTemplateBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/BaseRateService/GetAllBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/BaseRateService/GetBaseRatesForRateCard.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/BaseRateService/UpdateBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CompanyService/CreateCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CompanyService/GetAdvertisers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CompanyService/GetAllCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CompanyService/UpdateCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContactService/CreateContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContactService/GetAllContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContactService/GetUninvitedContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContactService/UpdateContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ContentService/GetAllContent.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeService/CopyImageCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeService/CreateCreativeFromTemplate.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeService/CreateCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeService/CreateCustomCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeService/CreateNativeCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeService/GetAllCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeService/GetImageCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeService/UpdateCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeSetService/GetAllCreativeSets.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeSetService/GetCreativeSetsForMasterCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeTemplateService/GetAllCreativeTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeWrapperService/CreateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeWrapperService/DeactivateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeWrapperService/GetActiveCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeWrapperService/GetAllCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CreativeWrapperService/UpdateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFieldOptions.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomFieldService/DeactivateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomFieldService/GetAllCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomFieldService/GetCustomFieldsForLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomFieldService/SetLineItemCustomFieldValue.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomFieldService/UpdateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingKeys.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ExchangeRateService/CreateExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ExchangeRateService/GetAllExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ExchangeRateService/UpdateExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecast.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecastById.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ForecastService/GetDeliveryForecastByIds.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/InventoryService/CreateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/InventoryService/CreateVideoAdUnit.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/InventoryService/DeActivateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/InventoryService/GetAdUnitsByStatement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/InventoryService/GetAllAdUnitSizes.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/InventoryService/GetAllAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/InventoryService/GetInventoryTree.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/InventoryService/UpdateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LabelService/CreateLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LabelService/DeactivateActiveLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LabelService/GetActiveLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LabelService/GetAllLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LabelService/UpdateLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemCreativeAssociationService/ActivateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemCreativeAssociationService/CreateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemCreativeAssociationService/DeactivateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetAllLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetLicasForLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemCreativeAssociationService/UpdateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemService/ActivateLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemService/CreateLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemService/CreateVideoLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemService/GetAllLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemService/GetLineItemsThatNeedCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemService/GetRecentlyUpdatedLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemService/TargetCustomCriteria.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/LineItemService/UpdateLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/NetworkService/GetAllNetworks.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/NetworkService/GetCurrentNetwork.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/NetworkService/MakeTestNetwork.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/OrderService/ApproveOrder.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/OrderService/CreateOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/OrderService/GetAllOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/OrderService/GetOrdersStartingSoon.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/OrderService/UpdateOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PackageService/CreatePackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PackageService/CreateProposalLineItemsFromPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PackageService/GetAllPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PackageService/GetInProgressPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PackageService/UpdatePackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PlacementService/CreatePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PlacementService/DeactivatePlacement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PlacementService/GetActivePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PlacementService/GetAllPlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PlacementService/UpdatePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PremiumRateService/CreatePremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PremiumRateService/GetAllPremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PremiumRateService/GetPremiumRatesForRateCard.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PremiumRateService/UpdatePremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductPackageItemService/GetAllProductPackageItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductPackageService/ActivateProductPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductPackageService/CreateProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductPackageService/GetActiveProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductPackageService/GetAllProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductPackageService/UpdateProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductService/GetAllProducts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductService/GetProductsForProductTemplate.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductService/PublishProgrammaticProductsToMarketplace.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductService/UpdateProducts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductTemplateService/ActivateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductTemplateService/CreateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductTemplateService/CreateProgrammaticProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductTemplateService/GetAllProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductTemplateService/GetSponsorshipProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProductTemplateService/UpdateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalLineItemService/ArchiveProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalLineItemService/CreateProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalLineItemService/GetAllProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalLineItemService/GetProposalLineItemsForProposal.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalLineItemService/UpdateProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/CreateProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/GetAllProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/GetMarketplaceComments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/GetProposalsPendingApproval.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/RequestBuyerAcceptance.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/SubmitProposalsForApproval.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ProposalService/UpdateProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PublisherQueryLanguageService/FetchMatchTables.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetGeoTargets.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetLineItemsNamedLike.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/RateCardService/GetAllRateCards.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/RateCardService/GetMarketplaceRateCards.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReconciliationReportService/GetAllReconciliationReports.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReportService/RunDeliveryReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReportService/RunInventoryReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReportService/RunReachReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReportService/RunReportWithCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReportService/RunSalesReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/ReportService/RunSavedQuery.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/TeamService/CreateTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/TeamService/GetAllTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/TeamService/UpdateTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserService/CreateUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserService/DeactivateUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserService/GetAllRoles.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserService/GetAllUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserService/GetCurrentUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserService/GetUserByEmailAddress.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserService/UpdateUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserTeamAssociationService/CreateUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserTeamAssociationService/DeleteUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserTeamAssociationService/GetAllUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/UserTeamAssociationService/UpdateUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowApprovalRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201611/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ActivityGroupService/CreateActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ActivityGroupService/GetActiveActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ActivityGroupService/GetAllActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ActivityGroupService/UpdateActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ActivityService/CreateActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ActivityService/GetActiveActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ActivityService/GetAllActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ActivityService/UpdateActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/AudienceSegmentService/CreateAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/AudienceSegmentService/GetAllAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/AudienceSegmentService/GetFirstPartyAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/AudienceSegmentService/UpdateAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/BaseRateService/CreateProductBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/BaseRateService/CreateProductTemplateBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/BaseRateService/GetAllBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/BaseRateService/GetBaseRatesForRateCard.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/BaseRateService/UpdateBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CompanyService/CreateCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CompanyService/GetAdvertisers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CompanyService/GetAllCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CompanyService/UpdateCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContactService/CreateContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContactService/GetAllContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContactService/GetUninvitedContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContactService/UpdateContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ContentService/GetAllContent.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeService/CopyImageCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeService/CreateCreativeFromTemplate.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeService/CreateCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeService/CreateCustomCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeService/CreateNativeCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeService/GetAllCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeService/GetImageCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeService/UpdateCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeSetService/GetAllCreativeSets.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeSetService/GetCreativeSetsForMasterCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeTemplateService/GetAllCreativeTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeWrapperService/CreateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeWrapperService/DeactivateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeWrapperService/GetActiveCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeWrapperService/GetAllCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CreativeWrapperService/UpdateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFieldOptions.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomFieldService/DeactivateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomFieldService/GetAllCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomFieldService/GetCustomFieldsForLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomFieldService/SetLineItemCustomFieldValue.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomFieldService/UpdateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingKeys.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ExchangeRateService/CreateExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ExchangeRateService/GetAllExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ExchangeRateService/UpdateExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecast.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecastById.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ForecastService/GetDeliveryForecastByIds.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/InventoryService/CreateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/InventoryService/CreateVideoAdUnit.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/InventoryService/DeActivateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/InventoryService/GetAdUnitsByStatement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/InventoryService/GetAllAdUnitSizes.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/InventoryService/GetAllAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/InventoryService/GetInventoryTree.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/InventoryService/UpdateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LabelService/CreateLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LabelService/DeactivateActiveLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LabelService/GetActiveLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LabelService/GetAllLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LabelService/UpdateLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemCreativeAssociationService/ActivateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemCreativeAssociationService/CreateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemCreativeAssociationService/DeactivateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetAllLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetLicasForLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemCreativeAssociationService/UpdateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemService/ActivateLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemService/CreateLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemService/CreateVideoLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemService/GetAllLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemService/GetLineItemsThatNeedCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemService/GetRecentlyUpdatedLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemService/TargetCustomCriteria.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/LineItemService/UpdateLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/NativeStyleService/CreateNativeStyles.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/NativeStyleService/GetAllNativeStyles.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/NetworkService/GetAllNetworks.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/NetworkService/GetCurrentNetwork.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/NetworkService/MakeTestNetwork.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/OrderService/ApproveOrder.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/OrderService/CreateOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/OrderService/GetAllOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/OrderService/GetOrdersStartingSoon.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/OrderService/UpdateOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PackageService/CreatePackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PackageService/CreateProposalLineItemsFromPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PackageService/GetAllPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PackageService/GetInProgressPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PackageService/UpdatePackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PlacementService/CreatePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PlacementService/DeactivatePlacement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PlacementService/GetActivePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PlacementService/GetAllPlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PlacementService/UpdatePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PremiumRateService/CreatePremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PremiumRateService/GetAllPremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PremiumRateService/GetPremiumRatesForRateCard.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PremiumRateService/UpdatePremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductPackageItemService/GetAllProductPackageItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductPackageService/ActivateProductPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductPackageService/CreateProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductPackageService/GetActiveProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductPackageService/GetAllProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductPackageService/UpdateProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductService/GetAllProducts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductService/GetProductsForProductTemplate.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductService/PublishProgrammaticProductsToMarketplace.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductService/UpdateProducts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductTemplateService/ActivateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductTemplateService/CreateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductTemplateService/CreateProgrammaticProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductTemplateService/GetAllProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductTemplateService/GetSponsorshipProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProductTemplateService/UpdateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalLineItemService/ArchiveProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalLineItemService/CreateProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalLineItemService/GetAllProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalLineItemService/GetProposalLineItemsForProposal.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalLineItemService/UpdateProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/CreateProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/GetAllProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/GetMarketplaceComments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/GetProposalsPendingApproval.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/RequestBuyerAcceptance.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/SubmitProposalsForApproval.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ProposalService/UpdateProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PublisherQueryLanguageService/FetchMatchTables.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetGeoTargets.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetLineItemsNamedLike.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetRecentChanges.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/RateCardService/GetAllRateCards.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/RateCardService/GetMarketplaceRateCards.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReconciliationReportService/GetAllReconciliationReports.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReportService/RunDeliveryReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReportService/RunInventoryReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReportService/RunReachReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReportService/RunReportWithCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReportService/RunSalesReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/ReportService/RunSavedQuery.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/TeamService/CreateTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/TeamService/GetAllTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/TeamService/UpdateTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserService/CreateUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserService/DeactivateUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserService/GetAllRoles.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserService/GetAllUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserService/GetCurrentUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserService/GetUserByEmailAddress.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserService/UpdateUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserTeamAssociationService/CreateUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserTeamAssociationService/DeleteUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserTeamAssociationService/GetAllUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/UserTeamAssociationService/UpdateUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowApprovalRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201702/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ActivityGroupService/CreateActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ActivityGroupService/GetActiveActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ActivityGroupService/GetAllActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ActivityGroupService/UpdateActivityGroups.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ActivityService/CreateActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ActivityService/GetActiveActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ActivityService/GetAllActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ActivityService/UpdateActivities.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/AudienceSegmentService/CreateAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/AudienceSegmentService/GetAllAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/AudienceSegmentService/GetFirstPartyAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/AudienceSegmentService/UpdateAudienceSegments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/BaseRateService/CreateProductBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/BaseRateService/CreateProductTemplateBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/BaseRateService/GetAllBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/BaseRateService/GetBaseRatesForRateCard.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/BaseRateService/UpdateBaseRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CompanyService/CreateCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CompanyService/GetAdvertisers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CompanyService/GetAllCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CompanyService/UpdateCompanies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContactService/CreateContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContactService/GetAllContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContactService/GetUninvitedContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContactService/UpdateContacts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ContentService/GetAllContent.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeService/CopyImageCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeService/CreateCreativeFromTemplate.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeService/CreateCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeService/CreateCustomCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeService/CreateNativeCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeService/GetAllCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeService/GetImageCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeService/UpdateCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeSetService/GetAllCreativeSets.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeSetService/GetCreativeSetsForMasterCreative.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeTemplateService/GetAllCreativeTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeWrapperService/CreateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeWrapperService/DeactivateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeWrapperService/GetActiveCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeWrapperService/GetAllCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CreativeWrapperService/UpdateCreativeWrappers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFieldOptions.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomFieldService/DeactivateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomFieldService/GetAllCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomFieldService/GetCustomFieldsForLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomFieldService/SetLineItemCustomFieldValue.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomFieldService/UpdateCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingKeys.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingValues.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ExchangeRateService/CreateExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ExchangeRateService/GetAllExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ExchangeRateService/UpdateExchangeRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecast.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecastById.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ForecastService/GetDeliveryForecastByIds.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/InventoryService/CreateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/InventoryService/CreateVideoAdUnit.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/InventoryService/DeActivateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/InventoryService/GetAdUnitsByStatement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/InventoryService/GetAllAdUnitSizes.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/InventoryService/GetAllAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/InventoryService/GetInventoryTree.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/InventoryService/UpdateAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LabelService/CreateLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LabelService/DeactivateActiveLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LabelService/GetActiveLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LabelService/GetAllLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LabelService/UpdateLabels.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemCreativeAssociationService/ActivateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemCreativeAssociationService/CreateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemCreativeAssociationService/DeactivateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetAllLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetLicasForLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemCreativeAssociationService/UpdateLicas.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemService/ActivateLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemService/CreateLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemService/CreateVideoLineItem.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemService/GetAllLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemService/GetLineItemsThatNeedCreatives.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemService/GetRecentlyUpdatedLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemService/TargetCustomCriteria.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/LineItemService/UpdateLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/NativeStyleService/CreateNativeStyles.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/NativeStyleService/GetAllNativeStyles.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/NetworkService/GetAllNetworks.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/NetworkService/GetCurrentNetwork.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/NetworkService/MakeTestNetwork.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/OrderService/ApproveOrder.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/OrderService/CreateOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/OrderService/GetAllOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/OrderService/GetOrdersStartingSoon.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/OrderService/UpdateOrders.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PackageService/CreatePackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PackageService/CreateProposalLineItemsFromPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PackageService/GetAllPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PackageService/GetInProgressPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PackageService/UpdatePackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PlacementService/CreatePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PlacementService/DeactivatePlacement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PlacementService/GetActivePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PlacementService/GetAllPlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PlacementService/UpdatePlacements.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PremiumRateService/CreatePremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PremiumRateService/GetAllPremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PremiumRateService/GetPremiumRatesForRateCard.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PremiumRateService/UpdatePremiumRates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductPackageItemService/GetAllProductPackageItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductPackageService/ActivateProductPackage.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductPackageService/CreateProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductPackageService/GetActiveProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductPackageService/GetAllProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductPackageService/UpdateProductPackages.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductService/GetAllProducts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductService/GetProductsForProductTemplate.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductService/PublishProgrammaticProductsToMarketplace.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductService/UpdateProducts.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductTemplateService/ActivateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductTemplateService/CreateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductTemplateService/CreateProgrammaticProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductTemplateService/GetAllProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductTemplateService/GetSponsorshipProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProductTemplateService/UpdateProductTemplates.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalLineItemService/ArchiveProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalLineItemService/CreateProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalLineItemService/GetAllProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalLineItemService/GetProposalLineItemsForProposal.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalLineItemService/UpdateProposalLineItems.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/CreateProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/GetAllProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/GetMarketplaceComments.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/GetProposalsPendingApproval.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/RequestBuyerAcceptance.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/SubmitProposalsForApproval.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ProposalService/UpdateProposals.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PublisherQueryLanguageService/FetchMatchTables.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetGeoTargets.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetLineItemsNamedLike.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetRecentChanges.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/RateCardService/GetAllRateCards.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/RateCardService/GetMarketplaceRateCards.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReconciliationReportService/GetAllReconciliationReports.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReportService/RunDeliveryReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReportService/RunInventoryReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReportService/RunReachReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReportService/RunReportWithCustomFields.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReportService/RunSalesReport.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/ReportService/RunSavedQuery.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/TeamService/CreateTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/TeamService/GetAllTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/TeamService/UpdateTeams.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserService/CreateUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserService/DeactivateUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserService/GetAllRoles.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserService/GetAllUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserService/GetCurrentUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserService/GetUserByEmailAddress.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserService/UpdateUsers.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserTeamAssociationService/CreateUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserTeamAssociationService/DeleteUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserTeamAssociationService/GetAllUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/UserTeamAssociationService/UpdateUserTeamAssociations.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowApprovalRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs (100%) rename {dfp/examples => examples}/Dfp/CSharp/v201705/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs (100%) rename {adwords/lib => lib}/BouncyCastle/BouncyCastle.Crypto.dll (100%) rename {adwords/lib => lib}/BouncyCastle/license.txt (100%) rename {adwords/lib => lib}/NUnit/license.txt (100%) rename {adwords/lib => lib}/NUnit/nunit.framework.dll (100%) rename {adwords/src => src}/AdWords/AdWords.csproj (100%) rename {adwords/src => src}/AdWords/AdWordsErrorMessages.Designer.cs (100%) rename {adwords/src => src}/AdWords/AdWordsErrorMessages.resx (100%) rename {adwords/src => src}/AdWords/App.config (100%) rename {adwords/src => src}/AdWords/Headers/AdWordsSoapHeader.cs (100%) rename {adwords/src => src}/AdWords/Headers/RequestHeader.cs (100%) rename {adwords/src => src}/AdWords/Headers/RequestHeaderStub.cs (100%) rename {adwords/src => src}/AdWords/Headers/ResponseHeader.cs (100%) rename {adwords/src => src}/AdWords/Headers/ResponseHeaderStub.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsApiException.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsAppConfig.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsCallListener.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsException.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsService.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsServiceFactory.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsServiceSignature.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsSoapClient.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsTraceListener.cs (100%) rename {adwords/src => src}/AdWords/Lib/AdWordsUser.cs (100%) rename {adwords/src => src}/AdWords/Lib/ApiCallEntry.cs (100%) rename {adwords/src => src}/AdWords/Properties/AssemblyInfo.cs (100%) rename {adwords/src => src}/AdWords/Properties/Properties.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/AdWordsBulkRequestException.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/BatchJobUtilitiesBase.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/BatchUploadProgress.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/BulkJobErrorHandler.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/CloudStorageError.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/CloudStorageErrorDetail.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/CloudStorageErrorResponse.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/v201609/BatchJobUtilities.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/v201702/BatchJobUtilities.cs (100%) rename {adwords/src => src}/AdWords/Util/BatchJob/v201705/BatchJobUtilities.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/AdWordsReportsException.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/IReportDefinition.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/IReportDefinitionField.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/Parser/AwReport.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/Parser/AwXmlTextReader.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/Parser/ColumnValuePair.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/Parser/InputTextReader.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/Parser/ReportColumn.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/Parser/ReportParserUtils.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/ReportDownloadError.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/ReportUtilities.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/v201609/PredefinedReportTypes.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/v201702/PredefinedReportTypes.cs (100%) rename {adwords/src => src}/AdWords/Util/Reports/v201705/PredefinedReportTypes.cs (100%) rename {adwords/src => src}/AdWords/Util/Selectors/BaseFields.cs (100%) rename {adwords/src => src}/AdWords/Util/Selectors/Field.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/BiddableUnitState.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/ExcludedUnitState.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/NodeDifference.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/NodeState.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/NodeType.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/ShoppingMessages.Designer.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/ShoppingMessages.resx (100%) rename {adwords/src => src}/AdWords/Util/Shopping/SubdivisionState.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201609/OperationPair.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparer.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201609/ProductDimensions.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201609/ProductPartitionNode.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201609/ProductPartitionNodeAdapter.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201609/ProductPartitionTree.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201702/OperationPair.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparer.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201702/ProductDimensions.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201702/ProductPartitionNode.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201702/ProductPartitionNodeAdapter.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201702/ProductPartitionTree.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201705/OperationPair.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparer.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201705/ProductDimensions.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201705/ProductPartitionNode.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201705/ProductPartitionNodeAdapter.cs (100%) rename {adwords/src => src}/AdWords/Util/Shopping/v201705/ProductPartitionTree.cs (100%) rename {adwords/src => src}/AdWords/Util/v201609/MapUtilities.cs (100%) rename {adwords/src => src}/AdWords/Util/v201702/MapUtilities.cs (100%) rename {adwords/src => src}/AdWords/Util/v201705/MapUtilities.cs (100%) rename {adwords/src => src}/AdWords/v201609/AdWordsApi.ProductDimension.cs (100%) rename {adwords/src => src}/AdWords/v201609/AdWordsApi.cs (100%) rename {adwords/src => src}/AdWords/v201609/AdWordsServiceV201609.cs (100%) rename {adwords/src => src}/AdWords/v201609/ApiError.cs (100%) rename {adwords/src => src}/AdWords/v201609/ApiException.cs (100%) rename {adwords/src => src}/AdWords/v201609/BatchJobApi.cs (100%) rename {adwords/src => src}/AdWords/v201609/FeedValidationErrors.cs (100%) rename {adwords/src => src}/AdWords/v201609/OrderBy.cs (100%) rename {adwords/src => src}/AdWords/v201609/Paging.cs (100%) rename {adwords/src => src}/AdWords/v201609/Predicate.cs (100%) rename {adwords/src => src}/AdWords/v201609/ReportDefinition.cs (100%) rename {adwords/src => src}/AdWords/v201702/AdWordsApi.ProductDimension.cs (100%) rename {adwords/src => src}/AdWords/v201702/AdWordsApi.cs (100%) rename {adwords/src => src}/AdWords/v201702/AdWordsServiceV201702.cs (100%) rename {adwords/src => src}/AdWords/v201702/ApiError.cs (100%) rename {adwords/src => src}/AdWords/v201702/ApiException.cs (100%) rename {adwords/src => src}/AdWords/v201702/BatchJobApi.cs (100%) rename {adwords/src => src}/AdWords/v201702/FeedValidationErrors.cs (100%) rename {adwords/src => src}/AdWords/v201702/OrderBy.cs (100%) rename {adwords/src => src}/AdWords/v201702/Paging.cs (100%) rename {adwords/src => src}/AdWords/v201702/Predicate.cs (100%) rename {adwords/src => src}/AdWords/v201702/ReportDefinition.cs (100%) rename {adwords/src => src}/AdWords/v201705/AdWordsApi.ProductDimension.cs (100%) rename {adwords/src => src}/AdWords/v201705/AdWordsApi.cs (100%) rename {adwords/src => src}/AdWords/v201705/AdWordsServiceV201705.cs (100%) rename {adwords/src => src}/AdWords/v201705/ApiError.cs (100%) rename {adwords/src => src}/AdWords/v201705/ApiException.cs (100%) rename {adwords/src => src}/AdWords/v201705/BatchJobApi.cs (100%) rename {adwords/src => src}/AdWords/v201705/FeedValidationErrors.cs (100%) rename {adwords/src => src}/AdWords/v201705/OrderBy.cs (100%) rename {adwords/src => src}/AdWords/v201705/Paging.cs (100%) rename {adwords/src => src}/AdWords/v201705/Predicate.cs (100%) rename {adwords/src => src}/AdWords/v201705/ReportDefinition.cs (100%) rename {adwords/src => src}/Common/AdsApi.snk (100%) rename {adwords/src => src}/Common/Common.csproj (100%) rename {adwords/src => src}/Common/CommonErrorMessages.Designer.cs (100%) rename {adwords/src => src}/Common/CommonErrorMessages.resx (100%) rename {adwords/src => src}/Common/Lib/AdsClient.cs (100%) rename {adwords/src => src}/Common/Lib/AdsException.cs (100%) rename {adwords/src => src}/Common/Lib/AdsOAuthException.cs (100%) rename {adwords/src => src}/Common/Lib/AdsOAuthProvider.cs (100%) rename {adwords/src => src}/Common/Lib/AdsOAuthProviderForApplications.cs (100%) rename {adwords/src => src}/Common/Lib/AdsOAuthProviderForServiceAccounts.cs (100%) rename {adwords/src => src}/Common/Lib/AdsService.cs (100%) rename {adwords/src => src}/Common/Lib/AdsSoapClient.cs (100%) rename {adwords/src => src}/Common/Lib/AdsUser.cs (100%) rename {adwords/src => src}/Common/Lib/AppConfig.cs (100%) rename {adwords/src => src}/Common/Lib/AppConfigBase.cs (100%) rename {adwords/src => src}/Common/Lib/Configurable.cs (100%) rename {adwords/src => src}/Common/Lib/ContextStore.cs (100%) rename {adwords/src => src}/Common/Lib/ErrorHandler.cs (100%) rename {adwords/src => src}/Common/Lib/OAuth2JwtClaimset.cs (100%) rename {adwords/src => src}/Common/Lib/OAuth2JwtClaimsetBuilder.cs (100%) rename {adwords/src => src}/Common/Lib/OAuth2ProviderBase.cs (100%) rename {adwords/src => src}/Common/Lib/OAuth2ProviderForApplications.cs (100%) rename {adwords/src => src}/Common/Lib/OAuth2ProviderForServiceAccounts.cs (100%) rename {adwords/src => src}/Common/Lib/ServiceFactory.cs (100%) rename {adwords/src => src}/Common/Lib/ServiceSignature.cs (100%) rename {adwords/src => src}/Common/Lib/SoapHeaderBase.cs (100%) rename {adwords/src => src}/Common/Logging/AdsFeatureUsageRegistry.cs (100%) rename {adwords/src => src}/Common/Logging/DefaultBodyFormatter.cs (100%) rename {adwords/src => src}/Common/Logging/JsonBodyFormatter.cs (100%) rename {adwords/src => src}/Common/Logging/KeyValueMessageFormatter.cs (100%) rename {adwords/src => src}/Common/Logging/LogEntry.cs (100%) rename {adwords/src => src}/Common/Logging/RequestInfo.cs (100%) rename {adwords/src => src}/Common/Logging/ResponseInfo.cs (100%) rename {adwords/src => src}/Common/Logging/SoapListener.cs (100%) rename {adwords/src => src}/Common/Logging/SoapListenerExtension.cs (100%) rename {adwords/src => src}/Common/Logging/SoapListenerExtensionAttribute.cs (100%) rename {adwords/src => src}/Common/Logging/SoapMessageDirection.cs (100%) rename {adwords/src => src}/Common/Logging/SoapTraceFormatter.cs (100%) rename {adwords/src => src}/Common/Logging/TraceFormatter.cs (100%) rename {adwords/src => src}/Common/Logging/TraceListener.cs (100%) rename {adwords/src => src}/Common/Logging/UrlEncodedBodyFormatter.cs (100%) rename {adwords/src => src}/Common/Properties/AssemblyInfo.cs (100%) rename {adwords/src => src}/Common/Properties/Properties.cs (100%) rename {adwords/src => src}/Common/Util/CollectionUtilities.cs (100%) rename {adwords/src => src}/Common/Util/CsvException.cs (100%) rename {adwords/src => src}/Common/Util/CsvFile.cs (100%) rename {adwords/src => src}/Common/Util/DateTimeProvider.cs (100%) rename {adwords/src => src}/Common/Util/DefaultDateTimeProvider.cs (100%) rename {adwords/src => src}/Common/Util/DeprecationUtilities.cs (100%) rename {adwords/src => src}/Common/Util/HttpUtilities.cs (100%) rename {adwords/src => src}/Common/Util/MediaUtilities.cs (100%) rename {adwords/src => src}/Common/Util/PreconditionUtilities.cs (100%) rename {adwords/src => src}/Common/Util/Reports/AdsReportUtilities.cs (100%) rename {adwords/src => src}/Common/Util/Reports/ReportResponse.cs (100%) rename {adwords/src => src}/Common/Util/Reports/ReportsException.cs (100%) rename {adwords/src => src}/Common/Util/SerializationUtilities.cs (100%) rename {adwords/src => src}/Common/Util/TemporaryIdGenerator.cs (100%) rename {adwords/src => src}/Common/Util/TraceUtilities.cs (100%) rename {adwords/src => src}/Common/Util/XmlUtilities.cs (100%) rename {dfp/src => src}/Dfp/App.config (100%) rename {dfp/src => src}/Dfp/Dfp.csproj (100%) rename {dfp/src => src}/Dfp/DfpErrorMessages.Designer.cs (100%) rename {dfp/src => src}/Dfp/DfpErrorMessages.resx (100%) rename {dfp/src => src}/Dfp/Headers/DfpSoapHeader.cs (100%) rename {dfp/src => src}/Dfp/Headers/RequestHeader.cs (100%) rename {dfp/src => src}/Dfp/Headers/RequestHeaderStub.cs (100%) rename {dfp/src => src}/Dfp/Headers/ResponseHeader.cs (100%) rename {dfp/src => src}/Dfp/Headers/ResponseHeaderStub.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpApiException.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpAppConfig.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpAuthorizationMethod.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpException.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpService.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpServiceFactory.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpServiceSignature.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpSoapClient.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpTraceListener.cs (100%) rename {dfp/src => src}/Dfp/Lib/DfpUser.cs (100%) rename {dfp/src => src}/Dfp/Properties/AssemblyInfo.cs (100%) rename {dfp/src => src}/Dfp/Properties/Properties.cs (100%) rename {dfp/src => src}/Dfp/Util/v201608/DateTimeUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201608/PqlUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201608/ReportUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201608/StatementBuilder.cs (100%) rename {dfp/src => src}/Dfp/Util/v201611/DateTimeUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201611/PqlUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201611/ReportUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201611/StatementBuilder.cs (100%) rename {dfp/src => src}/Dfp/Util/v201702/DateTimeUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201702/PqlUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201702/ReportUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201702/StatementBuilder.cs (100%) rename {dfp/src => src}/Dfp/Util/v201705/DateTimeUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201705/PqlUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201705/ReportUtilities.cs (100%) rename {dfp/src => src}/Dfp/Util/v201705/StatementBuilder.cs (100%) rename {dfp/src => src}/Dfp/v201608/DfpApi.cs (100%) rename {dfp/src => src}/Dfp/v201608/DfpServiceV201608.cs (100%) rename {dfp/src => src}/Dfp/v201611/DfpApi.cs (100%) rename {dfp/src => src}/Dfp/v201611/DfpServiceV201611.cs (100%) rename {dfp/src => src}/Dfp/v201702/DfpApi.cs (100%) rename {dfp/src => src}/Dfp/v201702/DfpServiceV201702.cs (100%) rename {dfp/src => src}/Dfp/v201705/DfpApi.cs (100%) rename {dfp/src => src}/Dfp/v201705/DfpServiceV201705.cs (100%) rename {adwords/tests => tests}/AdWords/AdWords.Tests.csproj (100%) rename {adwords/tests => tests}/AdWords/AdWordsRequestInterceptor.cs (100%) rename {adwords/tests => tests}/AdWords/App.config (100%) rename {adwords/tests => tests}/AdWords/EnumIntegrityTests.cs (100%) rename {adwords/tests => tests}/AdWords/ExampleTestsBase.cs (100%) rename {adwords/tests => tests}/AdWords/ExamplesMockData.cs (100%) rename {adwords/tests => tests}/AdWords/Lib/AdWordsAppConfigTest.cs (100%) rename {adwords/tests => tests}/AdWords/Lib/AdWordsCallListenerTest.cs (100%) rename {adwords/tests => tests}/AdWords/Lib/AdWordsServiceFactoryTests.cs (100%) rename {adwords/tests => tests}/AdWords/MockUtilities.cs (100%) rename {adwords/tests => tests}/AdWords/MockedExampleTestsBase.cs (100%) rename {adwords/tests => tests}/AdWords/Properties/AssemblyInfo.cs (100%) rename {adwords/tests => tests}/AdWords/Properties/Properties.cs (100%) rename {adwords/tests => tests}/AdWords/Resources/UpdateCampaign.v201609.txt (100%) rename {adwords/tests => tests}/AdWords/Resources/UpdateCampaign.v201702.txt (100%) rename {adwords/tests => tests}/AdWords/Resources/UpdateCampaign.v201705.txt (100%) rename {adwords/tests => tests}/AdWords/ServiceCreationTests.cs (100%) rename {adwords/tests => tests}/AdWords/SoapMessages.v201609.Designer.cs (100%) rename {adwords/tests => tests}/AdWords/SoapMessages.v201609.resx (100%) rename {adwords/tests => tests}/AdWords/SoapMessages.v201702.Designer.cs (100%) rename {adwords/tests => tests}/AdWords/SoapMessages.v201702.resx (100%) rename {adwords/tests => tests}/AdWords/SoapMessages.v201705.Designer.cs (100%) rename {adwords/tests => tests}/AdWords/SoapMessages.v201705.resx (100%) rename {adwords/tests => tests}/AdWords/Util/BatchJob/v201609/BatchJobUtilitiesTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/BatchJob/v201702/BatchJobUtilitiesTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/BatchJob/v201705/BatchJobUtilitiesTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/AwReportTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/InputTextReaderTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/ReportParserUtilsTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/Resources.Designer.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/Resources.resx (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/Resources/FaultyXML.xml (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/Resources/ValidXMLDistinctRows.xml (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/Resources/ValidXMLRepeatedRows.xml (100%) rename {adwords/tests => tests}/AdWords/Util/Reports/Parser/TestUtils.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparerTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201609/ProductDimensionsTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201609/ProductPartitionNodeTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201609/ProductPartitionTreeIntegrationTests.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201609/ProductPartitionTreeTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparerTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201702/ProductDimensionsTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201702/ProductPartitionNodeTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201702/ProductPartitionTreeIntegrationTests.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201702/ProductPartitionTreeTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparerTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201705/ProductDimensionsTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201705/ProductPartitionNodeTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201705/ProductPartitionTreeIntegrationTests.cs (100%) rename {adwords/tests => tests}/AdWords/Util/Shopping/v201705/ProductPartitionTreeTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/v201609/MapUtilitiesTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/v201702/MapUtilitiesTest.cs (100%) rename {adwords/tests => tests}/AdWords/Util/v201705/MapUtilitiesTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/AccountManagementTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/AdvancedOperationsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/BasicOperationsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/CampaignManagementTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/ErrorHandlingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/ExtensionsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/MigrationTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/MiscellaneousTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/MockTests.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/OptimizationTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/RemarketingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/ReportingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/ShoppingCampaignsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/ShoppingTestUtils.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/TargetingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/TestUtils.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/VersionedExampleTestsBase.cs (100%) rename {adwords/tests => tests}/AdWords/v201609/VersionedMockedExampleTestsBase.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/AccountManagementTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/AdvancedOperationsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/BasicOperationsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/CampaignManagementTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/ErrorHandlingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/ExtensionsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/MigrationTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/MiscellaneousTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/MockTests.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/OptimizationTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/RemarketingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/ReportingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/ShoppingCampaignsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/ShoppingTestUtils.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/TargetingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/TestUtils.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/VersionedExampleTestsBase.cs (100%) rename {adwords/tests => tests}/AdWords/v201702/VersionedMockedExampleTestsBase.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/AccountManagementTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/AdvancedOperationsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/BasicOperationsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/CampaignManagementTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/ErrorHandlingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/ExtensionsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/MigrationTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/MiscellaneousTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/MockTests.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/OptimizationTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/RemarketingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/ReportingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/ShoppingCampaignsTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/ShoppingTestUtils.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/TargetingTest.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/TestUtils.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/VersionedExampleTestsBase.cs (100%) rename {adwords/tests => tests}/AdWords/v201705/VersionedMockedExampleTestsBase.cs (100%) rename {adwords/tests => tests}/Common/Common.Tests.csproj (100%) rename {adwords/tests => tests}/Common/HttpMessage.cs (100%) rename {adwords/tests => tests}/Common/Lib/AdsExceptionTests.cs (100%) rename {adwords/tests => tests}/Common/Lib/AdsOAuthExceptionTests.cs (100%) rename {adwords/tests => tests}/Common/Lib/AppConfigBaseTests.cs (100%) rename {adwords/tests => tests}/Common/Lib/OAuth2JwtClaimsetTests.cs (100%) rename {adwords/tests => tests}/Common/Lib/OAuth2ProviderForApplicationsTests.cs (100%) rename {adwords/tests => tests}/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs (100%) rename {adwords/tests => tests}/Common/Lib/ServiceFactoryTests.cs (100%) rename {adwords/tests => tests}/Common/Lib/ServiceSignatureTests.cs (100%) rename {adwords/tests => tests}/Common/Logging/DefaultBodyFormatterTests.cs (100%) rename {adwords/tests => tests}/Common/Logging/JsonBodyFormatterTests.cs (100%) rename {adwords/tests => tests}/Common/Logging/KeyValueMessageFormatterTests.cs (100%) rename {adwords/tests => tests}/Common/Logging/SoapTraceFormatterTests.cs (100%) rename {adwords/tests => tests}/Common/Logging/TraceHelperTests.cs (100%) rename {adwords/tests => tests}/Common/Logging/TraceListenerTests.cs (100%) rename {adwords/tests => tests}/Common/Logging/UrlEncodedBodyFormatterTests.cs (100%) rename {adwords/tests => tests}/Common/MockWebRequest.cs (100%) rename {adwords/tests => tests}/Common/MockWebResponse.cs (100%) rename {adwords/tests => tests}/Common/Mocks/MockAdsClient.cs (100%) rename {adwords/tests => tests}/Common/Mocks/MockAdsException.cs (100%) rename {adwords/tests => tests}/Common/Mocks/MockAdsUser.cs (100%) rename {adwords/tests => tests}/Common/Mocks/MockAppConfig.cs (100%) rename {adwords/tests => tests}/Common/Mocks/MockDateTimeProvider.cs (100%) rename {adwords/tests => tests}/Common/Mocks/MockServiceFactory.cs (100%) rename {adwords/tests => tests}/Common/Mocks/MockServiceSignature.cs (100%) rename {adwords/tests => tests}/Common/Mocks/MockTraceListener.cs (100%) rename {adwords/tests => tests}/Common/OAuth2RequestInterceptor.cs (100%) rename {adwords/tests => tests}/Common/Resources.Designer.cs (100%) rename {adwords/tests => tests}/Common/Resources.resx (100%) rename {adwords/tests => tests}/Common/Resources/certificate.p12 (100%) rename {adwords/tests => tests}/Common/Resources/secret.json (100%) rename {adwords/tests => tests}/Common/Resources/utf8bom.xml (100%) rename {adwords/tests => tests}/Common/StubIntegrityTestHelper.cs (100%) rename {adwords/tests => tests}/Common/TestUtils.cs (100%) rename {adwords/tests => tests}/Common/Util/CollectionUtilitiesTest.cs (100%) rename {adwords/tests => tests}/Common/Util/CsvFileTests.cs (100%) rename {adwords/tests => tests}/Common/Util/DeprecationUtilitiesTest.cs (100%) rename {adwords/tests => tests}/Common/Util/MediaUtilitiesTests.cs (100%) rename {adwords/tests => tests}/Common/Util/Reports/ReportResponseTests.cs (100%) rename {adwords/tests => tests}/Common/Util/TemporaryIdGeneratorTests.cs (100%) rename {adwords/tests => tests}/Common/Util/TraceUtilitiesTest.cs (100%) rename {adwords/tests => tests}/Common/Util/XmlUtilitiesTest.cs (100%) rename {adwords/tests => tests}/Common/WebRequestInterceptor.cs (100%) rename {dfp/tests => tests}/Dfp/App.config (100%) rename {dfp/tests => tests}/Dfp/BaseTests.cs (100%) rename {dfp/tests => tests}/Dfp/Dfp.Tests.csproj (100%) rename {dfp/tests => tests}/Dfp/EnumIntegrityTests.cs (100%) rename {dfp/tests => tests}/Dfp/Properties/AssemblyInfo.cs (100%) rename {dfp/tests => tests}/Dfp/Properties/Properties.cs (100%) rename {dfp/tests => tests}/Dfp/ServiceCreationTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201608/DateTimeUtilitiesTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201608/PqlUtilitiesTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201608/StatementBuilderTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201611/DateTimeUtilitiesTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201611/PqlUtilitiesTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201611/StatementBuilderTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201702/DateTimeUtilitiesTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201702/PqlUtilitiesTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201702/StatementBuilderTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201705/DateTimeUtilitiesTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201705/PqlUtilitiesTests.cs (100%) rename {dfp/tests => tests}/Dfp/v201705/StatementBuilderTests.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/LocalWebServer.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/MainForm.Designer.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/MainForm.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/MainForm.resx (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/OAuthTokenGenerator.csproj (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/Program.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/Properties/AssemblyInfo.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/Properties/Properties.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/ResultDialog.Designer.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/ResultDialog.cs (100%) rename {adwords/utilities => utilities}/OAuthTokenGenerator/ResultDialog.resx (100%) diff --git a/adwords/AdWords.sln b/AdWords.sln similarity index 100% rename from adwords/AdWords.sln rename to AdWords.sln diff --git a/adwords/ChangeLog b/ChangeLog similarity index 100% rename from adwords/ChangeLog rename to ChangeLog diff --git a/dfp/Dfp.sln b/Dfp.sln similarity index 100% rename from dfp/Dfp.sln rename to Dfp.sln diff --git a/adwords/LICENSE b/LICENSE similarity index 100% rename from adwords/LICENSE rename to LICENSE diff --git a/adwords/README.md b/README.md similarity index 100% rename from adwords/README.md rename to README.md diff --git a/dfp/ChangeLog b/dfp/ChangeLog deleted file mode 100755 index 48522c34785..00000000000 --- a/dfp/ChangeLog +++ /dev/null @@ -1,915 +0,0 @@ -21.2.0 -====== -AdWords: - - Updated the csproj to complete the assembly signing as a post-build - step. - - Updated the GetAllDisapprovedAds code example to use the new - CombinedApprovalStatus selector. - Removed GetTextAds example in v201705. - - Removed assembly signing for Google.AdWords.Examples.VB.exe and - Google.AdWords.Tests.dll binaries. - - Fixed an issue with how GraduateTrial example displayed its output. - - Regenerated the stub code for all API versions. - - Updated the GetAllDisapprovedAds example to use new selector field. - - Updated a few code examples and tests to remove outdated settings - and contact emails. - - Removed support for v201607. - - Upgraded OAuth2 code examples to use API version v201705. - - Assembly signing is now specified in csproj and vbproj. AdsApi.snk - is now part of the opensource distribution. - -DFP: - - Updated the csproj to complete the assembly signing as a post-build - step. - - Regenerated the stub code for all API versions. - - Deleted unused TestUtils class. - -Common: - - Updated the csproj to complete the assembly signing as a post-build - step. - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/79 - -21.1.0 -====== -AdWords: - - Added support for v201705. - - Regenerated stubs for all versions. - - Fixed an issue with BatchJobUtilities when calling its methods from VB.NET on Mono. - -DFP: - - - -Common: - - Changed LogEntry method signatures to not depend on WebRequest or - WebResponse. - -21.0.0 -====== -AdWords: - - Removed unused AdWordsErrorHandler and AdWordsCredentialsExpiredException - classes. These classes are no longer used for refreshing expired credentials. - AdsOAuthProvider classes refresh credentials before expiry. - -DFP: - - Added support for v201705. - - Remove support for v201605. - - Removed v201608 examples. - - Regenerated service stubs to correct an enum consistency issue outlined in - #1. - -Common: - - Removed CredentialsExpiredException. This exception was no longer used. - AdsOAuthProvider classes refresh credentials before expiry. - - Removed support for writing to deprecated log sources - AdsClientLibs.SoapXmlLogs and AdsClientLibs.RequestInfoLogs. These have been - replaced by AdsClientLibs.SummaryRequestLogs and - AdsClientLibs.DetailedRequestLogs, respectively. Logging levels have also - been adjusted as follows: - - | Log type | Old level | New level | - |-------------------------------|---------------|---------------| - | SummaryRequestLogs (Success) | Information | Information | - | SummaryRequestLogs (Failure) | Error | Warning | - | DetailedRequestLogs (Success) | Information | Verbose | - | DetailedRequestLogs (Failure) | Error | Information | - - -20.0.0 -======= -AdWords: - - Addressed https://github.com/googleads/googleads-dotnet-lib/issues/39. Added - parser for reading XML streams to strongly typed report row objects. Added - predefined report row objects for all reports under Report Definition Service. - - Removed support for v201605. - - Updated the AddSitelinksUsingFeeds to add Line2 and Line3 attributes for the - sitelinks. - -DFP: - - Removed unused SOAP authentication header classes. OAuth authentication - tokens are only recognized in HTTP headers. - -Common: - - Removed support for OAuth2 service account flow using .p12 file. As part of - this change, - - `OAuth2JwtCertificatePath`, `OAuth2JwtCertificatePassword` settings were - removed from `App.config`, `AppConfig` interface and classes that - implement this interface. - - `OAuth2PrivateKey` and `OAuth2ServiceAccountEmail` settings were made - readonly in `AppConfig` class and won't be read from `App.config`. These - settings will be read from the file pointed to by `OAuth2SecretsJsonPath` - setting. - -19.1.0 -======= -AdWords: - - ErrorUtilities class was removed. Use ApiError.GetOperationIndex() instead of - ErrorUtilities.GetOperationIndex. - - Added support for v201702 - -DFP: - - Regenerated DFP service stubs to fix potential unmarshalling error v201702. - -Common: - - - -19.0.1 -======= -AdWords: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/97 - -DFP: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/97 - -Common: - - - -19.0.0 -======= -AdWords: - - - -DFP: - - Added support for v201702. - - Removed support for v201602 (sunset). - - Removed examples for v201605 (deprecated). - -Common: - - Changed minimum .NET Framework version to 4.5.2. - - Removed SerializationUtilities.LoadXml method. Use XmlUtilities.CreateDocument - method instead. - - Fixed a mono-specific crash that was introduced due to fix for - https://github.com/googleads/googleads-dotnet-lib/issues/95 in all libraries. - -18.34.0 -======= -AdWords: - - - -DFP: - - Added support for v201611. - - Removed support for v201508 and v201511. - - Removed examples for v201602. - -Common: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/95 in all libraries. - -18.33.0 -======= -AdWords: - - Removed support for v201603. - - Regenerated all stubs for existing API versions. - - Added new code example for accepting a Merchant Center invite link. - - All code examples that create campaigns were updated to set the campaign's initial status - to PAUSED. - -DFP: - - - -Common: - - Added a DecompressedStream property to ReportResponse class to simplify working with gzipped - reports. - - Common library version was bumped to 3.17.0.0. - -18.32.0 -======= -AdWords: - - Added support for v201609. - -DFP: - - - -Common: - - - -18.31.0 -======= -AdWords: - - Removed support for v201601. - - Made UserAgent setting in App.config / Web.config optional. If not - specified, a default value of "unknown" will be used. If specified, this - should be an ASCII string. - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/1 - -DFP: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/1 - -Common: - - Common library version was bumped to 3.16.0. - -18.30.0 -======= -AdWords: - - - -DFP: - - Added support for v201608. - - Removed support for v201505. - - Removed examples for v201508 and v201511. - -Common: - - - -18.29.1 -======= -AdWords: - - - -DFP: - - - -Common: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/92. - -18.29.0 -======= -AdWords: - - Added support for v201607. - - Updated AddCampaignTargetCriteria example in all versions to match the ones - in the other libraries. - - Updated the codebase to use CollectionUtilities where possible. - -DFP: - - - -Common: - - - -18.28.0 -======= -AdWords: - - Removed support for v201509. - - Fixed AddResponsiveDisplayAd example to send only the media ID when creating the ad. - -DFP: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/86. - -Common: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/87. - -18.27.0 -======= - -AdWords: - - Added support for v201605. - -DFP: - - - -Common: - - Common library version was bumped to 3.15.0. - -18.26.1 -======= -AdWords: - - Fixed dependency issue in - https://github.com/googleads/googleads-dotnet-lib/issues/85. - -DFP: - - Fixed dependency issue in - https://github.com/googleads/googleads-dotnet-lib/issues/85. - -Common: - - - -18.26.0 -======= -AdWords: - - Updated the AddCrmBasedUserList code examples to use BouncyCastle. - -DFP: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/83. - - Added support for v201605. - - Added examples for v201605. - - Removed support for v201502. - - Removed examples for v201505. - -Common: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/84. - - Added [Bouncy Castle](https://www.nuget.org/packages/BouncyCastle/) as a dependency. - - Modified P12 handling code to use Bouncy Castle, resolves - https://github.com/googleads/googleads-dotnet-lib/issues/75. - - Added support for using JSON secrets file when authenticating accounts using OAuth2 service - accounts. The JSON secrets file may be specified using the `OAuth2SecretsJsonPath` key in - `App.config / Web.config` file or in the AppConfig class. If `OAuth2SecretsJsonPath` setting is - specified, then the client library will ignore the settings in `OAuth2ServiceAccountEmail`, - `OAuth2JwtCertificatePath` and `OAuth2JwtCertificatePassword` settings. `OAuth2SecretsJsonPath` is - now the default mechanism for providing credentials for service account flow. - `OAuth2ServiceAccountEmail`, `OAuth2JwtCertificatePath` and `OAuth2JwtCertificatePassword` - settings have been marked as deprecated. - -18.25.0 -====== - -AdWords: - - Removed support for v201506. - -DFP: - - - -Common: - - - -18.24.0 -====== - -AdWords: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/78. - - Added support for v201603. - - Added a constructor for AdWordsUser that accepts an AdWordsAppConfig instance. - -DFP: - - - -Common: - - Set EnableSoapExtension setting's default value to true. This restores the original behaviour - of the library where logging is only dependent on the Trace filters by default. - -18.23.0 -====== -AdWords: - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/74. - -DFP: - - Added support for v201602. - - Removed support for v201411. - - Removed examples for v201502. - -Common: - - Fixed a bug causing EnableSoapExtension to be ignored. - -18.22.0 -======= -AdWords: - - Added support for v201601. - - Updated BatchJobUtilities to use the new resumable URL. Added a flag to - disable chunked upload. Increased the default chunk size to 32MB. - - Fixed GetAccountHierarchy example to use paging. - - Enhanced various utilities to include identifier in user agent. - -AdXBuyer: - - Removed code examples, tests and wiki entries. - -DFP: - - - -Common: - - Added EnableSoapExtension property to App.config to fix issue #70. - (https://github.com/googleads/googleads-dotnet-lib/issues/70) - - Made AppConfig.Proxy a writable property. - - Added support to include utilities identifier in user agent. This feature - may be controlled using the IncludeUtilitiesInUserAgent setting in App.config. - -18.21.0 -====== -AdWords: - - Updated Web.config to replace "MCC" with "AdWords manager account". - - Fixed a few more instances of old Paging logic with the new Paging.Default - code. - - Fixed a paging bug in OAuth\ConsoleExample.cs. - (https://github.com/googleads/googleads-dotnet-lib/issues/66) - - Fixed a paging bug in AddAdGroups.vb. - (https://github.com/googleads/googleads-dotnet-lib/issues/65) - - Fixed the AddSitelinks code example to check for end dates in the past - (https://github.com/googleads/googleads-dotnet-lib/issues/64) - - Fixed the GetKeywordBidSimulations code example to check for infinite loop - when there are no results. - (https://github.com/googleads/googleads-dotnet-lib/issues/63) - - Fixed the GetProductCategoryTaxonomy code example to fix an incorrect - condition check for adding product category taxonomies to a dictionary. - (https://github.com/googleads/googleads-dotnet-lib/issues/62) - - Fixed the AddCrmBasedUserList code example to update the membershipLifeSpan - field. (https://github.com/googleads/googleads-dotnet-lib/issues/61) -AdXBuyer: - - - -DFA: - - - -DFP: - - - -Common: - - - -18.20.0 -======= -AdWords: - - Added support for ProductPartitionTree utility. See - https://github.com/googleads/googleads-dotnet-lib/wiki/Working-with-ProductPartitionTrees for - usage details. (https://github.com/googleads/googleads-dotnet-lib/issues/60) - - Fixed a stack overflow error in BatchJobUtilities.cs. - (https://github.com/googleads/googleads-dotnet-lib/issues/59) - - Added support for FeedValidationErrors. - (https://github.com/googleads/googleads-dotnet-lib/issues/19) - - Added more friendly messages for AdWordsApiException - (https://github.com/googleads/googleads-dotnet-lib/issues/5) - - Fixed a compilation issue with Google.AdWords.Examples.CSharp nuget package. - (https://github.com/googleads/googleads-dotnet-lib/issues/58) - -AdXBuyer: - - - -DFP: - - - -Common: - - Added an TemporaryIdGenerator class that generates a sequence of IDs to be - used with various services that accept temporary IDs (e.g. Product Partition - trees and Batch Jobs in AdWords API). - - Added a Clone() method to SerializationUtilities. This method may be used - to perform a deep clone of objects that are XmlSerializable. - -18.19.0 -======= -AdWords: - - - -AdXBuyer: - - - -DFP: - - Added support for v201511. - - Removed support for v201408. - - Removed examples for v201411. - -Common: - - - -18.18.0 -======= -AdWords: - - Removed support for AdWords API v201502. - - Updated the BatchJobUtilities class to use resumable upload. - - Fixed some code examples that were using v201502 to use a newer version of - the API. - - Added a code example that shows how to stream a report and process it. - - Updated the GetKeywords example to match the rest of the client library examples. - -AdXBuyer: - - Removed support for AdWords API v201502. - - Fixed some code examples that were using v201502 to use a newer version of - the API. - -DFA: - - Removed support for the legacy DFA API. - -DFP: - - - -Common: - - A new HTTPUtilities class was introduced, and all the utility classes were - updated to use this class for creating an HTTP connection. - -18.17.0 -======= -AdWords: - - Fixed the display message in RemoveAdGroup examples to match what the example does. - - Generated stub code now lists all the selector fields. - - All code examples have been updated to use the new selector fields property. - - Utility methods have been added to Predicate, Selector and OrderBy classes - so you can write more concise code when iterating through objects. - - Added support for v201509. - -AdXBuyer: - - Generated stub code now lists all the selector fields. - - All code examples have been updated to use the new selector fields property. - - Utility methods have been added to Predicate, Selector and OrderBy classes - so you can write more concise code when iterating through objects. - - Added support for v201509. - -DFP: - - Minor bug fixes to v201508 examples. - -18.16.0 -======= -All: - - Removed Author and Tag entries from all the source files. - - Cleaned up the code to fix several broken doc tags and standardize variable names. - - Updated README file with Logging and OAuth2 instructions. - -AdWords: - - Stub code for all the API versions were regenerated. - - Stub code now contains documentation from the WSDL files. This allows you to see documentation - as part of auto complete from within Visual Studio. - -AdXBuyer: - - Stub code for all the API versions were regenerated. - - Stub code now contains documentation from the WSDL files. This allows you to see documentation - as part of auto complete from within Visual Studio. - - Fixed several broken tests. - -DFA: - - - -DFP: - - Stub code for all the API versions were regenerated. - - Stub code now contains documentation from the WSDL files. This allows you to see documentation - as part of auto complete from within Visual Studio. - - Removed support for v201403 and v201405. - - Removed examples for v201408. - - Added support for v201508. - - Added ReconciliationLineItemReportService. - -Common: - - Common library version was bumped to 3.9.0.0 - -18.15.0 -======= - -AdWords: - - Removed support for v201409. - -AdXBuyer: - - - -DFA: - - - -DFP: - - - -Common: - - - -18.14.0 -======= - -AdWords: - - Fixed [issue 48](https://github.com/googleads/googleads-dotnet-lib/issues/48) - -AdXBuyer: - - - -DFA: - - - -DFP: - - Minor updates to some example comments and print statements. - -Common: - - - -18.13.0 -======= - -AdWords: - - Added support for AdWords API v201506. - - Added support for includeZeroImpressions HTTP header in ReportUtilites class. This header may be - controlled using the new IncludeZeroImpressions setting in App.config / Web.config. See the - Reporting code examples in v201506 for more details on how to use this feature. - - AddCampaignTargetingCriteria example accepts an optional feedId in v201506. This is required - when creating LocationGroups criteria for distance targeting. - - AddGoogleMyBusinessLocationExtensions example was enhanced in v201506 to reuse the AdWords API - access token to handle the most common case where GMB and AdWords accounts share the same login - email. - - Enhanced ExampleUtilities class to handle Nullable arguments. - -AdXBuyer: - - - -DFA: - - - -DFP: - - - -Common: - - Fixed the namespace for Common\Util\PreconditionUtilities.cs class. - -18.12.0 -======= -AdWords: - - No changes. - -AdXBuyer: - - No changes. - -DFA: - - No changes. - -DFP: - - Added support for v201505. - - Updated report utility to use the new getReportJobStatus method. - - Added advanced ProposalLineItem actions. - - Updated DateTimeUtilities to require time zone IDs. - - Removed v201405 examples. - -Common: - - Removed support for ClientLogin. - -18.11.0 -======= -AdWords: - - Removed support for v201406. - - Removed support for legacy ReportUtilities. - - Fixed issue 44. - - Added support for SkipColumnHeader setting in ReportUtilities. - - Updated the Feed examples to use functionString instead of MatchingFunction. - - Updated MigrateToExtensionSettings code example to handle platform restrictions. - - Fixed the AddSitelinks code example to use the account's timezone. - - Published two new solutions. - - Budget Utilization report shows your campaigns' budget utilization. This may be used to - reallocate your campaign budgets. - - GetNewKeywords shows how to research for new keywords based on input from multiple data - sources. - -AdXBuyer: - - Removed support for v201406. - - Fixed issue 44. - - Added support for SkipColumnHeader setting in ReportUtilities. - -DFA: - - - -DFP: - - Added ReportUtilities to v201502. - - Updated ReportService examples to use ReportUtilities. - -Common: - - Added utility method to PreconditionUtilities. - -18.10.0 -======= -AdWords: - - Add support for ExtensionSetting services in v201409. - - Added support for AdWords API v201502. - - Removed AddLocationExtension code example from v201409. - - Updated AddShoppingCampaign code example to enable local inventory ads. - - Fixed trackingUrlTemplate on AddTextAdWithUpgradedUrls code example. - - Fixed issue 42 - Stackoverflow in legacy ReportUtilities. - - Updated AddCustomizers code example to use AdCustomizerFeedService instead - of feed services. - -AdXBuyer: - - Added support for AdWords API v201502. - - Updated AddThirdPartyRedirectAds code example to use Upgraded URLs. - - Added UpgradeAdUrl code example that shows how to update your ads to use - Upgraded URLs. - -DFA: - - No changes. - -DFP: - - Added PackageService and ProductPackageService examples. - -Common: - - No changes. - -18.9.0 -===== -AdWords: - - No changes. - -AdXBuyer: - - No changes. - -DFA: - - No changes. - -DFP: - - Added support for v201502. - - Removed support for v201311, v201308, and v201306. - - Removed examples for v201403. - - Updated ForecastService examples. - - Added PackageService, ProductPackageService and ProductPackageItemService. - - Removed support for ClientLogin with the removal of v201311 and earlier. - -Common: - - No Changes. - -18.8.0 -====== - -AdWords: - - Renamed AddPlacesLocationExtension example to - AddGoogleMyBusinessLocationExtensions and rewrote it to use Google My - Business account. - - Fixed a few tests and code examples to ensure all the tests pass. - - Modified all the code examples to use final URLs instead of destination - URLs. - - Fixed the comments and settings for targetAll in AddAdGroups examples. - -AdXBuyer: - - - -DFA: - - - -DFP: - - Added ExchangeRateService examples. - - Added PremiumRateService examples. - - Added ProductTemplateService examples. - - Added WorkflowRequestService examples. - -Common: - - - -18.7.0 -====== - -AdWords: - - Removed support for version v201402 of AdWords API. - - Removed support for reportMoneyInMicros headers in ReportUtilities. - - Added additional validation for AdWords for Express SOAP headers. - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/14 - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/10 - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/15 - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/10 - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/14 - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/22 - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/36 - - Added CONTRIBUTING.md to the repository. - - Report download requests and responses are now logged. - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/26 - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/10 - -AdXBuyer: - - Removed support for version v201402 of AdWords API. - - Report download requests and responses are now logged. - -DFA: - - Removed support for the DFA6 report service. - -DFP: - - Added ProposalLineItemService examples. - - Added ProductService examples. - - Added RateCardService examples. - - Added BaseRateService examples. - -Common: - - AdsClientLibs.SoapXmlLogs log source has been renamed to AdsClientLibs.DetailedRequestLogs. -AdsClientLibs.RequestInfoLogs log source has been renamed to AdsClientLibs.SummaryRequestLogs. All -the detailed HTTP(s) logs (Report downloads, OAuth, ClientLogin, SOAP) will be logged to -AdsClientLibs.DetailedRequestLogs, and a summary of each request will be logged to -AdsClientLibs.SummaryRequestLogs. The old log source names will still work, but will also generate -a deprecation warning at startup. To fix your code, update your application's Web.config or -App.config as per the instructions on -https://github.com/googleads/googleads-dotnet-lib/wiki/How-to-capture-SOAP-messages. - - All OAuth2 and ClientLogin requests and responses are logged. - - Fixed https://github.com/googleads/googleads-dotnet-lib/issues/30 - -18.6.0 -====== -AdWords: - - Enabled Option Strict for VB examples. - - Modified AdWords Express AddPromotion example to only place - one Creative on the added Promotion. - -AdXBuyer: - - Enabled Option Strict for VB examples. - -DFA: - - No changes. - -DFP: - - Added support for v201411. - - Added SharedAdUnitService and AdExclusionRuleService. - - Added examples for ProposalService. - - Removed v201311 examples. - -Common: - - No changes. - -18.5.0 -====== -AdWords: - - - -AdXBuyer: - - - -DFA: - - - -DFP: - - Regenerated v201408 services to fix issue #34. - -Common: - - Overhauled the ReportResponse class to fix issue #33. - - Version was bumped to 3.4.0 - - -18.4.0 -====== - -AdWords: -- Added support for v201409. -- Added a new version of ReportUtilities class. The new ReportUtilities class refactors common - functionality into the Common library so that it may be reused by other libraries (e.g. DFP). - The new version also provides access to the underlying Stream, in case you need to process the - report without downloading it first. The existing ReportUtilities class has been marked deprecated - and moved to Google.Api.Ads.AdWords.Util.Reports.Legacy namespace. The deprecated version of - ReportUtilities class will be removed on Feb 1, 2015. - See Reporting\DownloadCriteriaReport.cs for an example. - -AdXBuyer: - - - -DFA: -- Deprecated services and operations that are no longer supported in DCM. See the - [DCM upgrade guide](https://developers.google.com/doubleclick-advertisers/docs/upgrading) for - details. -- Removed obsolete DFA6-specific examples. -- Updated DFA OAuth and WCF examples to use v1.20 of the API and removed references to the - deprecated report service. -- Fixed a bug where the OAuth2 service account flow won't work if LoginPassword field is set in the - App.config. - -DFP: -- Added support for OAuth2 service accounts. - -Common: - - Version was bumped to 3.3.0. - -18.3.0 -====== - -AdWords: -- Added code example for Ad Customizers. - -AdXBuyer: - - - -DFA: - - - -DFP: -- Added support for DFP API v201408. -- Removed RateCardCustomizationService and RateCardCustomizationGroupService, - replaced with PremiumRateService. -- Removed support for DFP API v201208, v201211, v201302. -- Removed examples for DFP API v201306, v201308. -- Updated create line item and get forecast examples in v201408 to show how to - set Goal.goalType. - -Common: - - - -18.2.0 -====== - -- Fixed issue 20 (https://github.com/googleads/googleads-dotnet-lib/issues/20). -- Fixed issue 21 (https://github.com/googleads/googleads-dotnet-lib/issues/21). - -AdWords: -- Removed support for ClientLogin. - -AdXBuyer: -- Removed support for ClientLogin. - -DFA: -- - -DFP: -- - -Common: -- Version was bumped to 3.2.0. - -18.1.0 -====== - -- Fixed issue 3 in https://github.com/googleads/googleads-dotnet-lib/issues - -AdWords: -- Removed support for AdWords API v201309. -- Added support for AdWords For Video API v201406. -- Code examples no longer rename AdGroups and Campaigns when removing them. - -AdXBuyer: -- Removed support for AdXBuyer API v201309. -- Code examples no longer rename AdGroups and Campaigns when removing them. -- Fixed some comments in RemovePlacement.cs and RemovePlacement.vb. - -DFA: - - - -DFP: - - - -Common: - - Version was bumped to 3.1.0. - -18.0.0 -====== - -- AdWords, AdxBuyer, DFP and DFA .NET client libraries were combined into a - single repository and given a single version number. The older versions - and ChangeLog may be obtained from - https://github.com/googleads/googleads-dotnet-lib/tree/master/legacy. - -AdWords: -- Added support for v201406, except for AdWords for Video. -- Updated OAuth scope. See - https://developers.google.com/adwords/api/docs/guides/authentication#scope - for details. - -DFA: - - - -DFP: - - - -Common: - - Version was bumped to 3.0.0. - diff --git a/dfp/LICENSE b/dfp/LICENSE deleted file mode 100755 index 9c5ab27f60b..00000000000 --- a/dfp/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2011 Google Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/dfp/README.md b/dfp/README.md deleted file mode 100755 index 7c2c0b7f384..00000000000 --- a/dfp/README.md +++ /dev/null @@ -1,212 +0,0 @@ -# Google Ads API .NET Client Library - -This project hosts the .NET client library for the various SOAP-Based Ads APIs at Google - - [AdWords API](//developers.google.com/adwords/api) and - [Google's DoubleClick for Publishers (DFP) API](//developers.google.com/doubleclick-publishers). - -## Features -- Distributed via Nuget -- Stub classes for all the supported API versions and services. -- Helpful utilities -- SOAP messages are logged, for easier debugging purposes -- Automatic handling of SOAP headers -- Easy management of credentials, authentication, and session information -- Docs available in HTML and XML format. - -## Requirements - -- .NET Framework 4.5.2 (or above): http://msdn2.microsoft.com/en-us/netframework/default.aspx -- Microsoft Visual Studio: http://msdn2.microsoft.com/en-us/vstudio/default.aspx -- An appropriate Google Ads account. - -## Announcements and updates - -For API and client library updates and news, please follow our Google+ Ads Developers page: -https://plus.google.com/+GoogleAdsDevelopers/posts and our Google Ads Developers blog: -http://googleadsdeveloper.blogspot.com/. - -## Getting started - -1. Install your library of choice. We recommend using the following Nuget distributions: - #### AdWords API - - - [Google.AdWords](https://www.nuget.org/packages/Google.AdWords/): AdWords and DoubleClick Ad - Exchange Buyer API DotNet Client Library - - [Google.AdWords.Examples.CSharp](https://www.nuget.org/packages/Google.AdWords.Examples.CSharp/): - C# Code examples for AdWords API - - [Google.AdWords.Examples.VB](https://www.nuget.org/packages/Google.AdWords.Examples.VB/): - VB.NET Code examples for AdWords API - - #### DFP API - - - [Google.Dfp](https://www.nuget.org/packages/Google.Dfp/): DFP API DotNet Client Library - - [Google.Dfp.Examples.CSharp](https://www.nuget.org/packages/Google.Dfp.Examples.CSharp/): - C# Code examples for DFP API - - You can learn more about the nuget package manager at http://www.nuget.org. For other distribution options, see the alternative distribution options below. - -1. Setup your OAuth2 credentials. - - The AdWords and DoubleClick for Publishers APIs use -[OAuth2](http://oauth.net/2/) as the authentication mechanism. Follow the appropriate guide below based on your use case. - - **If you're accessing an API using your own credentials...** - - * [Using AdWords](https://github.com/googleads/googleads-dotnet-lib/wiki/API-access-using-own-credentials-(installed-application-flow)) - * [Using DFP](https://github.com/googleads/googleads-dotnet-lib/wiki/API-access-using-own-credentials-(server-to-server-flow)) - - **If you're accessing an API on behalf of clients...** - - * [Developing a web application (AdWords or DFP)](https://github.com/googleads/googleads-dotnet-lib/wiki/API-access-on-behalf-of-your-clients-(web-flow)) - -## Alternative distribution options - -### Binary distribution - -The binary distribution of the Ads API .NET library consists of a precompiled version of the - library as a .NET assembly, code examples for using the library, and library documentation. - If you are interested in just using the library and not in its internals, and you don't use - nuget package manager in your development environment, then you should download this distribution. - There are separate downloads for AdWords and DFP APIs. - -The contents of this distribution are as follows: -``` - \ - \lib - - Precompiled assemblies. - - Documentation xmls for the assemblies. - \examples - Code examples, in C# and VB.NET (when available). - README - ChangeLog - COPYING - Visual Studio solution file -``` -To run the code examples: - -- Open Visual Studio solution file in the root folder of the binary distribution in Microsoft - Visual Studio -- Open `App.config` for the examples project and follow the instructions in the file to enter - required configuration values. -- Save and close `App.config`. -- Open the Properties dialog for the Examples project (Right click the Examples project of your - choice in the Solution Explorer and select the Properties option from the context menu.). -- Navigate to the Debug Tab and enter the command line options. The command line options are of - the form `version.examplename`. For instance, `v201603.AddCampaign` is the command line option to - run `AddCampaign` example in `v201603` version of the AdWords API. -- Compile and run the Examples project. - -Alternatively, each code example has a `main()` method, so you can set the appropriate code example - as the Startup object (Select the Application tab on the Examples Properties dialog and pick - the desired class from the "Startup object" dropdown.). - -To use the library in a new project: - -- Create a new Visual Studio project of your choice (for instance, a C# Windows application). -- Copy the lib folder from the binary distribution to your project folder. Add references to all - the assemblies in this folder in your project. -- Add a reference to System.Web.Services in your project. -- Copy `examples\App.config` to your project directory and add it to your project. -- Edit the required keys in `App.config`. If your application has its own `App.config`, then you - need to merge its contents with the contents of `examples\App.config`. -- Make a call to the library, e.g.: - -``` -// Create an appropriate AdsUser instance. -AdWordsUser user = new AdWordsUser(); - -// Create the required service. -CampaignService service = (CampaignService) user.GetService( - AdWordsService.v201603.CampaignService); - -// make more calls to service class. -``` -You can refer to [this wiki article](//github.com/googleads/googleads-dotnet-lib/wiki/Getting-Started) for - more details. - -### Source distribution - -The source distribution of the Ads API .NET Client Library consists of individual Visual Studio - projects for the client library, code examples and test cases, documentation, and support - libraries and tools for compiling and running the library. If you are interested in the - library internals you should download this distribution. There are separate downloads for - AdWords and DFP APIs. - -``` -The contents of this distribution are as follows: - - \ - \examples - \adwords - - Adwords API code examples, in C# and VB.NET. - \lib - - External client libraries referenced by various projects in the source - distribution. - \src - - Client library source, provided as a Visual Studio project. - \tests - - NAnt test cases for the library, provided as a Visual Studio project - README - Visual Studio solution - ChangeLog - COPYING -``` - -To compile and run the project: - -- Open the Visual Studio solution in Microsoft Visual Studio. -- Open `App.config` for the examples project of your choice and follow the instructions in the - file to enter required configuration values. -- Save and close `App.config`. -- Open the Properties dialog for the Examples project (Right click the Examples project in the - Solution Explorer and select the Properties option from the context menu.). -- Navigate to the Debug tab and enter the command line options. The command line options are of - the form `version.examplename`. For instance, `v201603.AddCampaign` is the command line option - to run the `AddCampaign` example for the `v201603` version of the AdWords API. -- Set the Examples project as the Startup project. -- Compile and run the Examples project. - -Alternatively, each code example has a `main()` method, so you can set the appropriate code - example as the Startup object (Select the Application tab on the Examples Properties dialog and - pick the desired class from the "Startup object" dropdown.). - -To run the test cases, you need to download and install the latest version of NUnit from - http://www.nunit.org/. Once you have installed NUnit, you can compile and run the test cases - as follows: - -- Right click the appropriate Tests project and choose References from the context menu. -- From the references dialog, add a reference to the `nunit.framework` assembly. -- Right click theTests project and choose Properties. Navigate to the Debug tab and choose - "Start external program". Browse to the path for `nunit.exe` and pick it as the Startup - application. -- Open `App.config` for the test project and follow the instructions in the file to enter - required configuration values. -- Set the `AdWords.Tests` project as the startup project and run the project. - -It is recommended that you run the test cases against a test environment. Refer to the - appropriate API documentation for details on how this may be done. - -## How to enable logging - -See https://github.com/googleads/googleads-dotnet-lib/wiki#logging for details. - -## Miscellaneous - -### Wiki -- https://github.com/googleads/googleads-dotnet-lib/wiki - -### Issue tracker -- https://github.com/googleads/googleads-dotnet-lib/issues - -### API Documentation: -- AdWords API: https://developers.google.com/adwords/api/ -- DFP API: https://developers.google.com/doubleclick-publishers/ - -### Support forum -- AdWords API: https://developers.google.com/adwords/api/community/ -- DFP API: https://developers.google.com/doubleclick-publishers/community - -### Authors -- https://github.com/AnashOommen -- https://github.com/ChristopherSeeley -- https://github.com/jimper diff --git a/dfp/lib/BouncyCastle/BouncyCastle.Crypto.dll b/dfp/lib/BouncyCastle/BouncyCastle.Crypto.dll deleted file mode 100755 index a078d27b4c97a575ad4c24a37af40f31f6fd0c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1425408 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”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
76?NSokPp#Jx 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

u{Ufz^#xT?X1o{4}4ROcrmg| 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�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 z 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

- /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class CommonErrorMessages { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal CommonErrorMessages() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Google.Api.Ads.Common.CommonErrorMessages", typeof(CommonErrorMessages).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to AuthToken login failed. See ErrorCode for more details.. - /// - internal static string AuthTokenLoginFailed { - get { - return ResourceManager.GetString("AuthTokenLoginFailed", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Required key 'client_email' is missing in JSON secrets file.. - /// - internal static string ClientEmailIsMissingInJsonFile { - get { - return ResourceManager.GetString("ClientEmailIsMissingInJsonFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Email cannot be null. - /// - internal static string EmailCannotBeNull { - get { - return ResourceManager.GetString("EmailCannotBeNull", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to load JSON secrets file for service account configuration. See inner exception for details.. - /// - internal static string FailedToLoadJsonSecretsFile { - get { - return ResourceManager.GetString("FailedToLoadJsonSecretsFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Failed to parse response from server. See inner exception for more details.. - /// - internal static string FailedToParseAuthTokenException { - get { - return ResourceManager.GetString("FailedToParseAuthTokenException", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Invalid stage for Soap message.. - /// - internal static string InvalidStageForSoapMessage { - get { - return ResourceManager.GetString("InvalidStageForSoapMessage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Could not locate factoryType field in Type {0}. - /// - internal static string MissingFactoryType { - get { - return ResourceManager.GetString("MissingFactoryType", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to OAuth2 authorizationCode cannot be empty when fetching access token.. - /// - internal static string OAuth2AuthorizationCodeIsEmpty { - get { - return ResourceManager.GetString("OAuth2AuthorizationCodeIsEmpty", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to OAuth2 Offline mode should be true to refresh access token.. - /// - internal static string OAuth2IsNotInOfflineMode { - get { - return ResourceManager.GetString("OAuth2IsNotInOfflineMode", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unable to load private key from specified JWT certificate.. - /// - internal static string OAuth2JwtCertificateInvalid { - get { - return ResourceManager.GetString("OAuth2JwtCertificateInvalid", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Looks like your application is not configured to use OAuth2 properly. Required OAuth2 parameter {0} is missing. You may run Common\\Utils\\OAuth2TokenGenerator.cs to generate a default OAuth2 configuration.. - /// - internal static string OAuth2ParameterErrorMessage { - get { - return ResourceManager.GetString("OAuth2ParameterErrorMessage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Could not load an oauth extension class.. - /// - internal static string OAuthExtensionNotLoaded { - get { - return ResourceManager.GetString("OAuthExtensionNotLoaded", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Password cannot be null. - /// - internal static string PasswordCannotBeNull { - get { - return ResourceManager.GetString("PasswordCannotBeNull", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Required key 'private_key' is missing in JSON secrets file.. - /// - internal static string PrivateKeyIsMissingInJsonFile { - get { - return ResourceManager.GetString("PrivateKeyIsMissingInJsonFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Quotes not closed in csv record.. - /// - internal static string QuotesNotClosedInCsvLine { - get { - return ResourceManager.GetString("QuotesNotClosedInCsvLine", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Service cannot be null. - /// - internal static string ServiceCannotBeNull { - get { - return ResourceManager.GetString("ServiceCannotBeNull", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cache signature cannot be null.. - /// - internal static string SignatureCannotBeNull { - get { - return ResourceManager.GetString("SignatureCannotBeNull", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The SoapListenerExtension class is not loaded. The most possible cause for this error is that you haven't registered Google.Api.Ads.Common.Lib.SoapListenerExtension as a soap extension under configuration/system.web/webServices/soapExtensionTypes in your your App.config or Web.config. See the sample App.config for details on how to register soap extensions.. - /// - internal static string SoapListenerExtensionNotLoaded { - get { - return ResourceManager.GetString("SoapListenerExtensionNotLoaded", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Source stream is not readable.. - /// - internal static string SourceStreamIsNotReadable { - get { - return ResourceManager.GetString("SourceStreamIsNotReadable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start index should be less than end index.. - /// - internal static string StartIndexShouldBeLessThanEndIndex { - get { - return ResourceManager.GetString("StartIndexShouldBeLessThanEndIndex", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This parameter should be greater than 0 and less than the length of text.. - /// - internal static string StringIndexOutOfBounds { - get { - return ResourceManager.GetString("StringIndexOutOfBounds", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Target stream is not writable.. - /// - internal static string TargetStreamIsNotWritable { - get { - return ResourceManager.GetString("TargetStreamIsNotWritable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Text to split cannot be null.. - /// - internal static string TextCannotBeNull { - get { - return ResourceManager.GetString("TextCannotBeNull", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unknown trace source : {0}.. - /// - internal static string UnknownTraceSource { - get { - return ResourceManager.GetString("UnknownTraceSource", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unregistered service type {0} was requested.. - /// - internal static string UnregisteredServiceTypeRequested { - get { - return ResourceManager.GetString("UnregisteredServiceTypeRequested", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You are using a deprecated log source '{0}'. See https://github.com/googleads/googleads-dotnet-lib/wiki/How-to-capture-SOAP-messages for details on how to configure logging.. - /// - internal static string UsingDeprecatedLogSource { - get { - return ResourceManager.GetString("UsingDeprecatedLogSource", resourceCulture); - } - } - } -} diff --git a/dfp/src/Common/CommonErrorMessages.resx b/dfp/src/Common/CommonErrorMessages.resx deleted file mode 100755 index 9a3c768a9db..00000000000 --- a/dfp/src/Common/CommonErrorMessages.resx +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - AuthToken login failed. See ErrorCode for more details. - Used by AuthToken when login fails. - - - Required key 'client_email' is missing in JSON secrets file. - Used by AppConfigBase class when trying to load various settings from the JSON secrets file when using OAuth2 service account flow. Thrown if client_email key is missing in the JSON file. - - - Email cannot be null - Used by AuthTokenCache when an empty email is passed to it. - - - Failed to load JSON secrets file for service account configuration. See inner exception for details. - Used by AppConfigBase class when trying to load various settings from the JSON secrets file when using OAuth2 service account flow. - - - Failed to parse response from server. See inner exception for more details. - Used as default error message when auth token error parsing fails. - - - Invalid stage for Soap message. - Used for ArgumentException by TraceExtension.ProcessMessage if message parameter has an invalid value for Stage field. - - - Could not locate factoryType field in Type {0} - Used for ArgumentException when AdsUser.RegisterServices cannot locate factoryType in a registered Service. - - - OAuth2 authorizationCode cannot be empty when fetching access token. - Used to validate authorizationCode in OAuth2 flow. - - - OAuth2 Offline mode should be true to refresh access token. - Used to check if OAuth2 offline mode is enabled when refreshing access tokens. - - - Unable to load private key from specified JWT certificate. - Used by OAuth2ProviderBase if a private key cannot be loaded from OAuth2JwtCertificatePath. - - - Looks like your application is not configured to use OAuth2 properly. Required OAuth2 parameter {0} is missing. You may run Common\\Utils\\OAuth2TokenGenerator.cs to generate a default OAuth2 configuration. - Thrown when a required OAuth2 parameter is missing. - - - Could not load an oauth extension class. - - - Password cannot be null - Used by AuthTokenCache when an empty password is passed to it. - - - Required key 'private_key' is missing in JSON secrets file. - Used by AppConfigBase class when trying to load various settings from the JSON secrets file when using OAuth2 service account flow. Thrown if private_key key is missing in the JSON file. - - - Quotes not closed in csv record. - Used for CsvException by CsvFile.SplitCsvLine if text parameter has an unclosed quote. - - - Service cannot be null - Used by AuthTokenCache when an empty service is passed to it. - - - Cache signature cannot be null. - Used for ArgumentException by InMemoryTokenCache class. - - - The SoapListenerExtension class is not loaded. The most possible cause for this error is that you haven't registered Google.Api.Ads.Common.Lib.SoapListenerExtension as a soap extension under configuration/system.web/webServices/soapExtensionTypes in your your App.config or Web.config. See the sample App.config for details on how to register soap extensions. - Thrown when SoapListenerExtension was not loaded as a soap extension from App.config. - - - Source stream is not readable. - Used for ArgumentException by MediaUtilities.CopyStream if source stream is not readable. - - - Start index should be less than end index. - Used for ArgumentException by ExtractAndAddItem if startIndex > endIndex. - - - This parameter should be greater than 0 and less than the length of text. - Used for ArgumentOutOfRangeException wherever string index is out of bounds. - - - Target stream is not writable. - Used for ArgumentException by MediaUtilities.CopyStream if target stream is not writable. - - - Text to split cannot be null. - Used for ArgumentNullException by CsvFile.SplitCsvLine for 'text' parameter. - - - Unknown trace source : {0}. - Used by TraceUtilites.GetSource method when someone requests an unknown trace source. - - - Unregistered service type {0} was requested. - Used for InvalidCastException by AdsUser.GetService for serviceSignature parameter if an unregistered service type is requested. - - - You are using a deprecated log source '{0}'. See https://github.com/googleads/googleads-dotnet-lib/wiki/How-to-capture-SOAP-messages for details on how to configure logging. - Used for writng deprecation warnings if the user is using a deprecated log source. - - \ No newline at end of file diff --git a/dfp/src/Common/Lib/AdsClient.cs b/dfp/src/Common/Lib/AdsClient.cs deleted file mode 100755 index 1026d522e23..00000000000 --- a/dfp/src/Common/Lib/AdsClient.cs +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Net; -using System.Security.Cryptography.X509Certificates; -using System.Text; -using Google.Api.Ads.Common.Lib; - -namespace Google.Api.Ads.Common.Lib { - /// - /// This interface defines a client protocol (SOAP, WSE, REST, etc.) - /// supported by the library. - /// - public interface AdsClient { - /// - /// Gets or sets the name of the connection group for the request. - /// - string ConnectionGroupName { - get; - set; - } - - /// - /// Gets or sets security credentials for client authentication. - /// - ICredentials Credentials { - get; - set; - } - - /// - /// Gets or sets whether pre-authentication is enabled. - /// - bool PreAuthenticate { - get; - set; - } - - /// - /// The System.Text.Encoding used to make the client request to the service. - /// - Encoding RequestEncoding { - get; - set; - } - - /// - /// The timeout for the request. - /// - int Timeout { - get; - set; - } - - /// - /// The url endpoint for the service. - /// - string Url { - get; - set; - } - - /// - /// Gets or sets whether this service should use the credentials from - /// System.Net.CredentialCache.DefaultCredentials. - /// - bool UseDefaultCredentials { - get; - set; - } - - /// - /// Gets or sets whether the client automatically follows server redirects. - /// - bool AllowAutoRedirect { - get; - set; - } - - /// - /// Gets the collection of client certificates. - /// - X509CertificateCollection ClientCertificates { - get; - } - - /// - /// Gets or sets the collection of cookies. - /// - CookieContainer CookieContainer { - get; - set; - } - - /// - /// Gets or sets whether gzip compression is enabled. - /// - bool EnableDecompression { - get; - set; - } - - /// - /// Gets or sets proxy information for making a service request through - /// a firewall. - /// - IWebProxy Proxy { - get; - set; - } - - /// - /// Gets or sets a value that indicates whether connection sharing is - /// enabled when the client uses NTLM authentication to connect to the Web - /// server that hosts the web service. - /// - bool UnsafeAuthenticatedConnectionSharing { - get; - set; - } - - /// - /// Gets or sets the value for the user agent header that is sent with each - /// request. - /// - string UserAgent { - get; - set; - } - - /// - /// Gets or sets the AdsUser object that created this - /// service. - /// - AdsUser User { - get; - set; - } - - /// - /// Gets or sets the signature for this service. - /// - ServiceSignature Signature { - get; - set; - } - - /// - /// Gets or sets the web request associated with this service's - /// last API call. - /// - WebRequest LastRequest { - get; - set; - } - - /// - /// Gets or sets the web response associated with this service's - /// last API call. - /// - WebResponse LastResponse { - get; - set; - } - } -} diff --git a/dfp/src/Common/Lib/AdsException.cs b/dfp/src/Common/Lib/AdsException.cs deleted file mode 100755 index a0ae3c3959f..00000000000 --- a/dfp/src/Common/Lib/AdsException.cs +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Runtime.Serialization; -using System.Text; -using System.Xml.Serialization; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Base class for all exceptions thrown by the library related - /// to an Ads API call. - /// - [Serializable] - public abstract class AdsException : Exception { - /// - /// Protected constructor. - /// - protected AdsException() : base() { - } - - /// - /// Protected constructor. - /// - /// Error message for this API exception. - protected AdsException(string message) : base(message) { - } - - /// - /// Protected constructor. - /// - /// Error message for this API exception. - /// Inner exception, if any. - protected AdsException(string message, Exception innerException) - : base(message, innerException) { - } - - /// - /// Protected constructor, used by serialization frameworks while - /// deserializing an exception object. - /// - /// Info about the serialization context. - /// A streaming context that represents the - /// serialization stream. - protected AdsException(SerializationInfo info, StreamingContext context) : base(info, context) { - } - - /// - /// Gets a specified field from serialization stream. - /// - /// The type of field. - /// The serialization context. - /// The serialization field name. - /// The deserialized value of field. - protected T GetValue(SerializationInfo info, string fieldName) { - return (T) info.GetValue(fieldName, typeof(T)); - } - } -} diff --git a/dfp/src/Common/Lib/AdsOAuthException.cs b/dfp/src/Common/Lib/AdsOAuthException.cs deleted file mode 100755 index dd0e5804a4b..00000000000 --- a/dfp/src/Common/Lib/AdsOAuthException.cs +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; -using System.IO; -using System.Runtime.Serialization; -using System.Security.Permissions; -using System.Text; -using System.Xml.Serialization; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Exception thrown when OAuth authentication with Ads server fails. - /// - [Serializable] - public class AdsOAuthException : AdsException { - /// - /// Public constructor. - /// - public AdsOAuthException() : base() { - } - - /// - /// Public constructor. - /// - /// Error message for this API exception. - public AdsOAuthException(string message) : base(message) { - } - - /// - /// Public constructor. - /// - /// Error message for this API exception. - /// Inner exception, if any. - public AdsOAuthException(string message, Exception innerException) - : base(message, innerException) { - } - - /// - /// Protected constructor. Used by serialization frameworks while - /// deserializing an exception object. - /// - /// Info about the serialization context. - /// A streaming context that represents the - /// serialization stream. - protected AdsOAuthException(SerializationInfo info, StreamingContext context) - : base(info, context) { - } - } -} diff --git a/dfp/src/Common/Lib/AdsOAuthProvider.cs b/dfp/src/Common/Lib/AdsOAuthProvider.cs deleted file mode 100755 index ca379b2b512..00000000000 --- a/dfp/src/Common/Lib/AdsOAuthProvider.cs +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Text; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Called when an AdsOAuthProvider obtained a new access token and optionally - /// a new refresh token from the OAuth server. - /// - /// The provider. - public delegate void OAuthTokensObtainedCallback(AdsOAuthProvider provider); - - /// - /// The type of OAuth2 flow. - /// - public enum OAuth2Flow { - /// - /// Web and installed application flows. - /// - APPLICATION, - - /// - /// Service account flow. - /// - SERVICE_ACCOUNT - } - - /// - /// Provides OAuth authorization mechanism for Ads services. - /// - public interface AdsOAuthProvider : Configurable { - /// - /// Gets or sets the client that is making the request. This value is - /// obtained from the - /// API console during application registration. - /// - string ClientId { get; set; } - - /// - /// Gets or sets the client secret obtained from the - /// API console - /// during application registration.during application registration. - /// - string ClientSecret { get; set; } - - /// - /// Gets or sets the API access your application is requesting. This is - /// space delimited. - /// - string Scope { get; set; } - - /// - /// Gets or sets a parameter that your application can use for keeping - /// state. The OAuth Authorization Server roundtrips this parameter. - /// - string State { get; set; } - - /// - /// Gets the type of token returned by the server. This field will - /// always have the value Bearer for now. - /// - string TokenType { get; } - - /// - /// Gets or sets the token that can be sent to a Google API for - /// authentication. - /// - string AccessToken { get; set; } - - /// - /// Gets or sets the time at which access token was retrieved. - /// - DateTime UpdatedOn { get; set; } - - /// - /// Gets the remaining lifetime on the access token. - /// - int ExpiresIn { get; set; } - - /// - /// Refreshes the access token if expiring. - /// - void RefreshAccessToken(); - - /// - /// Refreshes the access token if expiring. - /// - void RefreshAccessTokenIfExpiring(); - - /// - /// Gets the OAuth authorization header to be used with HTTP requests. - /// - /// The authorization header. - string GetAuthHeader(); - - /// - /// Callback triggered when this provider obtains a new access token or - /// refresh token from the OAuth server. - /// - OAuthTokensObtainedCallback OnOAuthTokensObtained { - get; - } - } -} diff --git a/dfp/src/Common/Lib/AdsOAuthProviderForApplications.cs b/dfp/src/Common/Lib/AdsOAuthProviderForApplications.cs deleted file mode 100755 index 0145474dd56..00000000000 --- a/dfp/src/Common/Lib/AdsOAuthProviderForApplications.cs +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Provides OAuth authorization mechanism for Ads services when using Web and - /// Installed application flows. - /// - public interface AdsOAuthProviderForApplications : AdsOAuthProvider { - /// - /// Indicates if your application needs to access APIs when the user is not - /// present at the browser. This is defaulted to true. - /// - bool IsOffline { get; set; } - - /// - /// Gets or sets where the url where the response is sent. This should be a - /// registered redirect uri on the - /// API console. - /// - string RedirectUri { get; set; } - - /// - /// Gets or sets a token that may be used to obtain a new access token. - /// Refresh tokens are valid until the user revokes access. - /// - string RefreshToken { get; set; } - - /// - /// Gets the authorization URL. - /// - /// The authorization url. - string GetAuthorizationUrl(); - - /// - /// Fetches the access and optionally the refresh token if applicable. - /// - /// The authorization code returned by - /// OAuth server. - /// True if the tokens were fetched successfully, false otherwise. - /// - bool FetchAccessAndRefreshTokens(string authorizationCode); - - /// - /// Refreshes the access token if offline mode is used. - /// - void RefreshAccessTokenInOfflineMode(); - - /// - /// Revokes the refresh token if offline mode is used. - /// - void RevokeRefreshToken(); - } -} diff --git a/dfp/src/Common/Lib/AdsOAuthProviderForServiceAccounts.cs b/dfp/src/Common/Lib/AdsOAuthProviderForServiceAccounts.cs deleted file mode 100755 index eadb8358657..00000000000 --- a/dfp/src/Common/Lib/AdsOAuthProviderForServiceAccounts.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Provides OAuth authorization mechanism for Ads services when using service - /// account flow. - /// - public interface AdsOAuthProviderForServiceAccounts : AdsOAuthProvider { - /// - /// Gets the service account email for which access token should be - /// retrieved. - /// - string ServiceAccountEmail { get; } - - /// - /// Gets or sets the email of the account for which the call is being made. - /// - string PrnEmail { get; set; } - - /// - /// Generates the access token for service account. - /// - void GenerateAccessTokenForServiceAccount(); - } -} diff --git a/dfp/src/Common/Lib/AdsService.cs b/dfp/src/Common/Lib/AdsService.cs deleted file mode 100755 index fc0169c5a95..00000000000 --- a/dfp/src/Common/Lib/AdsService.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Reflection; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Lists all the services available through this library. - /// - public abstract class AdsService { - /// - /// Gets all service types defined in this service. - /// - /// The nested types that define service versions under this - /// service. - public abstract Type[] GetServiceTypes(); - } -} diff --git a/dfp/src/Common/Lib/AdsSoapClient.cs b/dfp/src/Common/Lib/AdsSoapClient.cs deleted file mode 100755 index 232a4d380e9..00000000000 --- a/dfp/src/Common/Lib/AdsSoapClient.cs +++ /dev/null @@ -1,342 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.IO; -using System.Net; -using System.Runtime.Remoting.Messaging; -using System.Text; -using System.Web; -using System.Web.Services; -using System.Web.Services.Configuration; -using System.Web.Services.Protocols; -using System.Xml; -using System.Xml.Serialization; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Base class for all SOAP services supported by this library. - /// - [System.ComponentModel.DesignerCategoryAttribute("code")] - public abstract class AdsSoapClient : SoapHttpClientProtocol, AdsClient { - /// - /// The user that created this service instance. - /// - private AdsUser user; - - /// - /// The signature for this service. - /// - private ServiceSignature signature; - - /// - /// The WebRequest that was used by the last API call from this service. - /// - private WebRequest lastRequest; - - /// - /// The WebResponse for the last API call from this service. - /// - private WebResponse lastResponse; - - /// - /// An internal delegate to the method that makes the SOAP API call. - /// - /// The name of the SOAP API method. - /// The list of parameters for the SOAP API - /// method. - /// The results from calling the SOAP API method. - private delegate object[] CallMethod(string methodName, object[] parameters); - - /// - /// Gets or sets the AdsUser object that created this - /// service. - /// - public AdsUser User { - get { - return user; - } - set { - user = value; - } - } - - /// - /// Gets or sets the signature for this service. - /// - public ServiceSignature Signature { - get { - return signature; - } - set { - signature = value; - } - } - - /// - /// Gets or sets the web request associated with this service's - /// last API call. - /// - public WebRequest LastRequest { - get { - return lastRequest; - } - set { - lastRequest = value; - } - } - - /// - /// Gets or sets the web response associated with this service's - /// last API call. - /// - public WebResponse LastResponse { - get { - return lastResponse; - } - set { - lastResponse = value; - } - } - - /// - /// Invokes a SOAP service method synchronously using SOAP. - /// - /// The name of the SOAP service method - /// in the derived class that is invoking BeginInvoke. - /// An array of objects containing the - /// parameters to pass to the SOAP service. The order of the - /// values in the array correspond to the order of the parameters - /// in the calling method of the derived class. - /// An array of objects containing the return value and any - /// by reference or out parameters of the derived class method. - protected new object[] Invoke(string methodName, object[] parameters) { - return MakeApiCall(methodName, parameters); - } - - /// - /// Starts an asynchronous invocation of a SOAP service method - /// using SOAP. - /// - /// The name of the SOAP service method - /// in the derived class that is invoking BeginInvoke. - /// An array of objects containing the - /// parameters to pass to the SOAP service. The order of the - /// values in the array correspond to the order of the parameters - /// in the calling method of the derived class. - /// The delegate to call when the asynchronous - /// invoke is complete. - /// Extra information supplied by the caller. - /// - /// An IAsyncResult which is passed to EndInvoke to obtain - /// the return values from the remote method call. - protected new IAsyncResult BeginInvoke(string methodName, object[] parameters, - AsyncCallback callback, object asyncState) { - CallMethod apiFunction = new CallMethod(MakeApiCall); - return apiFunction.BeginInvoke(methodName, parameters, callback, apiFunction); - } - - /// - /// Ends an asynchronous invocation of a SOAP service method using - /// SOAP. - /// - /// The IAsyncResult returned from BeginInvoke. - /// - /// An array of objects containing the return value and any - /// by-reference or out parameters of the derived class method. - /// Thrown if - /// is null. - protected new object[] EndInvoke(IAsyncResult asyncResult) { - if (asyncResult == null) { - throw new ArgumentNullException("asyncResult"); - } - CallMethod apiFunction = (CallMethod) asyncResult.AsyncState; - return apiFunction.EndInvoke(asyncResult); - } - - /// - /// Initializes the service before MakeApiCall. - /// - /// Name of the method. - /// The method parameters. - protected virtual void InitForCall(string methodName, object[] parameters) { - if (this.user.Config.EnableSoapExtension && !IsSoapListenerLoaded()) { - throw new ApplicationException(CommonErrorMessages.SoapListenerExtensionNotLoaded); - } - ContextStore.AddKey("SoapService", this); - ContextStore.AddKey("SoapMethod", methodName); - this.user.InitListeners(); - } - - /// - /// Cleans up the service after MakeApiCall. - /// - /// Name of the method. - /// The method parameters. - protected virtual void CleanupAfterCall(string methodName, object[] parameters) { - this.user.CleanupListeners(); - ContextStore.RemoveKey("SoapService"); - ContextStore.RemoveKey("SoapMethod"); - this.lastRequest = null; - this.lastResponse = null; - } - - /// - /// This method makes the actual SOAP API call. It is a thin wrapper - /// over SOAPHttpClientProtocol:Invoke, and provide things like - /// protection from race condition. - /// - /// The name of the SOAP API method. - /// The list of parameters for the SOAP API - /// method. - /// The results from calling the SOAP API method. - protected virtual object[] MakeApiCall(string methodName, object[] parameters) { - try { - InitForCall(methodName, parameters); - return base.Invoke(methodName, parameters); - } catch (SoapException e) { - throw GetCustomException(e); - } finally { - CleanupAfterCall(methodName, parameters); - } - } - - /// - /// Determines whether SOAP listener extension is loaded. - /// - /// True, if SoapListenerExtension is loaded as a SOAP extension. - /// - private static bool IsSoapListenerLoaded() { - foreach (SoapExtensionTypeElement extensionElement in - WebServicesSection.Current.SoapExtensionTypes) { - if (extensionElement.Type == typeof(SoapListenerExtension)) { - return true; - } - } - return false; - } - - /// - /// Gets a custom exception that wraps the SOAP exception thrown - /// by the server. - /// - /// SOAPException that was thrown by the server. - /// A custom exception object that wraps the SOAP exception. - /// - /// Any service that wishes to provide a custom exception - /// should override this method. - protected virtual Exception GetCustomException(SoapException exception) { - return exception; - } - - /// - /// Creates a WebRequest instance for the specified url. - /// - /// The Uri to use when creating the WebRequest. - /// The WebRequest instance. - protected override WebRequest GetWebRequest(Uri uri) { - // Store the base WebRequest in the member variable for future access. - this.lastRequest = base.GetWebRequest(uri); - if (this.lastRequest is HttpWebRequest) { - (this.lastRequest as HttpWebRequest).ServicePoint.Expect100Continue = false; - } - return this.lastRequest; - } - - /// - /// Returns a response from a synchronous request to an XML Web - /// service method. - /// - /// The System.Net.WebRequest from which - /// to get the response. - /// The web response. - protected override WebResponse GetWebResponse(WebRequest request) { - // Store the base WebResponse in the member variable for future access. - this.lastResponse = base.GetWebResponse(request); - return this.lastResponse; - } - - /// - /// Returns a response from an asynchronous request to a SOAP service - /// method. - /// - /// The System.Net.WebRequest from which to get the - /// response. - /// The System.IAsyncResult to pass to System.Net. - /// HttpWebRequest.EndGetResponse(System.IAsyncResult) when the response - /// has completed. - /// The web response. - protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result) { - // Store the base WebResponse in the member variable for future access. - lastResponse = base.GetWebResponse(request, result); - return lastResponse; - } - - /// - /// Gets the default XML namespace, based on the type of this object. - /// - /// The XML namespace to which this object is serialized, or an - /// empty string if the method fails to retrieve the default namespace. - /// - /// - /// All the services making use of the XML Serialization framework - /// (including ones generated by wsdl.exe and xsd.exe) will have - /// a WebServiceBindingAttribute decoration, something like: - /// - /// [System.Web.Services.WebServiceBindingAttribute( - /// Name = "SomeServiceSoapBinding", - /// Namespace = "https://the_xml_namespace_for_serializing")] - /// public partial class SomeService : SoapHttpClientProtocol { - /// ... - /// } - /// - /// The only exception to this rule is when we choose to write our own - /// serialization framework, by implementing IXmlSerializable on - /// AdsSoapClient. If and when someone does that, and someone were to - /// call this method, then he/she will get an empty string from this - /// method. - /// - protected string GetDefaultNamespace() { - object[] attributes = this.GetType().GetCustomAttributes(false); - foreach (object attribute in attributes) { - if (attribute is WebServiceBindingAttribute) { - return ((WebServiceBindingAttribute) attribute).Namespace; - } - } - return String.Empty; - } - - /// - /// Extracts the fault xml node from soap exception. - /// - /// The SOAP exception corresponding to the SOAP - /// fault. - /// The xml namespace for the fault node. - /// The root node name for fault node. - /// The fault node. - protected static XmlElement GetFaultNode(SoapException exception, string ns, - string nodeName) { - // Issue 1: Exception.Detail could be null. Can happen if SoapException - // is a SoapHeaderException. - if (exception.Detail == null) { - return null; - } else { - XmlNamespaceManager xmlns = - new XmlNamespaceManager(exception.Detail.OwnerDocument.NameTable); - xmlns.AddNamespace("api", ns); - return (XmlElement) exception.Detail.SelectSingleNode("api:" + nodeName, xmlns); - } - } - } -} diff --git a/dfp/src/Common/Lib/AdsUser.cs b/dfp/src/Common/Lib/AdsUser.cs deleted file mode 100755 index bd46afc7d26..00000000000 --- a/dfp/src/Common/Lib/AdsUser.cs +++ /dev/null @@ -1,335 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Xml; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// Represents an Ads API user. - /// - public abstract class AdsUser : Configurable { - - /// - /// The list of SOAP listeners. - /// - private List listeners = new List(); - - /// - /// The OAuth provider. - /// - private AdsOAuthProvider oAuthProvider = null; - - /// - /// The application configuration for this user. - /// - private AppConfig config; - - /// - /// Stores all the registered services and their factories. - /// - private Dictionary serviceFactoryMap = - new Dictionary(); - - /// - /// Gets or sets the OAuth provider. - /// - public AdsOAuthProvider OAuthProvider { - get { - return oAuthProvider; - } - set { - oAuthProvider = value; - } - } - - /// - /// Gets or sets the application configuration for this user. - /// - public AppConfig Config { - get { - return config; - } - } - - /// - /// Gets the listeners. - /// - public List Listeners { - get { - return listeners; - } - } - - /// - /// Protected constructor. Use this version from a derived class if you want - /// the library to use all settings from App.config. - /// - protected AdsUser(AppConfigBase config) - : this(config, null) { - } - - /// - /// Protected constructor. Use this version from a derived class if you want - /// the library to use all settings from App.config. - /// - /// This constructor exists for backward compatibility purposes. - /// - protected AdsUser(AppConfigBase config, Dictionary headers) { - this.config = config; - MergeValuesFromHeaders(config, headers); - RegisterServices(GetServiceTypes()); - if (this.config.EnableSoapExtension) { - listeners.AddRange(GetDefaultListeners()); - } - SetHeadersFromConfig(); - config.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) { - if (e.PropertyName == "OAuth2Mode") { - SetOAuthProvider(config); - } - }; - SetOAuthProvider(config); - } - - /// - /// Sets the OAuth provider. - /// - /// The config. - private void SetOAuthProvider(AppConfigBase config) { - if (config.OAuth2Mode == OAuth2Flow.APPLICATION) { - this.OAuthProvider = new OAuth2ProviderForApplications(config); - } else { - this.OAuthProvider = new OAuth2ProviderForServiceAccounts(config); - } - } - - /// - /// Merges the values from headers and config into config instance. - /// - /// The appication configuration to use. - /// The configuration headers. - private void MergeValuesFromHeaders(AppConfigBase config, Dictionary headers) { - if (headers != null) { - Type configType = config.GetType(); - foreach (string key in headers.Keys) { - PropertyInfo propInfo = configType.GetProperty(key, BindingFlags.IgnoreCase | - BindingFlags.Public | BindingFlags.Instance); - if (propInfo != null && propInfo.PropertyType == typeof(string)) { - propInfo.SetValue(config, headers[key], null); - } - } - } - } - - /// - /// Registers a family of services against this user. - /// - /// The family of services that should be - /// registered against this user. - /// - /// Every family of services that should be registered with an AdsUser - /// should be like follows: - /// - /// - /// public class vX { - /// /// Type of the factory that can create services of SomeService.vX - /// public Type factoryType = typeof(SomeServiceVxFactory); - /// - /// /// Various services under vX. - /// - /// public readonly ServiceSignature Service1; - /// public readonly ServiceSignature Service2; - /// } - /// - /// - /// The method uses reflection to - /// - Find all the fields of type ServiceSignature. - /// - Extract the factory type from factoryType field. - /// - Register each found service type with the user. - /// - /// - protected void RegisterServices(Type[] servicesFamilies) { - if (servicesFamilies == null) { - return; - } - foreach (Type serviceFamily in servicesFamilies) { - FieldInfo fieldInfo = serviceFamily.GetField("factoryType", BindingFlags.Public - | BindingFlags.Static); - Type serviceFactoryType = null; - if (fieldInfo != null) { - serviceFactoryType = (Type) fieldInfo.GetValue(null); - } else { - throw new ArgumentException(string.Format(CommonErrorMessages.MissingFactoryType, - serviceFactoryType.AssemblyQualifiedName)); - } - if (serviceFactoryType != null) { - ServiceFactory serviceFactory = - (ServiceFactory) Activator.CreateInstance(serviceFactoryType); - FieldInfo[] fields = serviceFamily.GetFields(); - foreach (FieldInfo field in fields) { - ServiceSignature signature = field.GetValue(null) as ServiceSignature; - if (signature != null) { - RegisterService(signature.Id, serviceFactory); - } - } - } - } - } - - /// - /// Gets all the service types to be registered against this user. - /// - /// The type of all service classes to be registered. - public abstract Type[] GetServiceTypes(); - - /// - /// Gets the default listeners. - /// - /// A list of default listeners - public abstract SoapListener[] GetDefaultListeners(); - - /// - /// Set the user headers from App.config. - /// - protected void SetHeadersFromConfig() { - List uniqueFactories = GetUniqueFactories(); - foreach (ServiceFactory uniqueFactory in uniqueFactories) { - uniqueFactory.Config = config; - } - } - - /// - /// Gets the unique set of factories from the list of registered factories. - /// - private List GetUniqueFactories() { - List uniqueFactories = new List(); - foreach (string id in serviceFactoryMap.Keys) { - ServiceFactory serviceFactory = serviceFactoryMap[id]; - if (!uniqueFactories.Contains(serviceFactory)) { - uniqueFactories.Add(serviceFactory); - } - } - return uniqueFactories; - } - - /// - /// Register a service with AdsUser. - /// - /// A unique id for the service being registered. - /// - /// The factory that will create this - /// service. - public void RegisterService(string serviceId, ServiceFactory serviceFactory) { - serviceFactoryMap[serviceId] = serviceFactory; - } - - /// - /// Gets the service factory for a service. - /// - /// The service id. - /// The service factory instance, or null if the service is not - /// yet registered. - public ServiceFactory GetServiceFactory(string serviceId) { - return CollectionUtilities.TryGetValue(serviceFactoryMap, serviceId); - } - - /// - /// Creates an object of the requested type of service. - /// - /// Signature of the service being requested. - /// - /// An object of the requested type of service. The - /// caller should cast this object to the desired type. - public AdsClient GetService(ServiceSignature serviceSignature) { - return GetService(serviceSignature, String.Empty); - } - - /// - /// Creates an object of the requested type of service. - /// - /// Signature of the service being requested. - /// - /// The server url for Ads service. - /// An object of the requested type of service. The - /// caller should cast this object to the desired type. - public AdsClient GetService(ServiceSignature serviceSignature, string serverUrl) { - Uri uri = null; - if (!string.IsNullOrEmpty(serverUrl)) { - uri = new Uri(serverUrl); - } - return GetService(serviceSignature, uri); - } - - /// - /// Creates an object of the requested type of service. - /// - /// Signature of the service being requested. - /// - /// The server url for Ads service. - /// An object of the requested type of service. The - /// caller should cast this object to the desired type. - [MethodImpl(MethodImplOptions.Synchronized)] - public AdsClient GetService(ServiceSignature serviceSignature, Uri serverUrl) { - if (serviceSignature == null) { - throw new ArgumentNullException("serviceSignature"); - } else { - ServiceFactory factory = GetServiceFactory(serviceSignature.Id); - if (factory == null) { - throw new ArgumentException(string.Format( - CommonErrorMessages.UnregisteredServiceTypeRequested, serviceSignature.ServiceName)); - } else { - return factory.CreateService(serviceSignature, this, serverUrl); - } - } - } - - /// - /// Calls the SOAP listeners. - /// - /// The SOAP message as an xml document. - /// The service for which call is being made. - /// The direction of SOAP message. - internal void CallListeners(XmlDocument document, AdsClient service, - SoapMessageDirection direction) { - foreach (SoapListener listener in listeners) { - listener.HandleMessage(document, service, direction); - } - } - - /// - /// Initialize the SOAP listeners before an API call. - /// - internal void InitListeners() { - foreach (SoapListener listener in listeners) { - listener.InitForCall(); - } - } - - /// - /// Cleans up the SOAP listeners after an API call. - /// - internal void CleanupListeners() { - foreach (SoapListener listener in listeners) { - listener.CleanupAfterCall(); - } - } - } -} diff --git a/dfp/src/Common/Lib/AppConfig.cs b/dfp/src/Common/Lib/AppConfig.cs deleted file mode 100755 index fad18178d87..00000000000 --- a/dfp/src/Common/Lib/AppConfig.cs +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.ComponentModel; -using System.Net; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// Interface for common configuration properties. - /// - public interface AppConfig : ICloneable { - - /// - /// Gets whether the credentials in the log file should be masked. - /// - bool MaskCredentials { get; } - - /// - /// Gets or sets the OAuth2 server URL. - /// - /// This property is primarily used only for testing purposes. - /// - string OAuth2ServerUrl { get; set; } - - /// - /// Gets or sets the OAuth2 mode. - /// - OAuth2Flow OAuth2Mode { get; set; } - - /// - /// Gets or sets the OAuth2 access token. - /// - string OAuth2AccessToken { get; set; } - - /// - /// Gets or sets the OAuth2 client id. - /// - string OAuth2ClientId { get; set; } - - /// - /// Gets or sets the OAuth2 client secret. - /// - string OAuth2ClientSecret { get; set; } - - /// - /// Gets or sets the OAuth2 redirect URI. - /// - /// This setting is applicable only when using OAuth2 web flow. - /// - string OAuth2RedirectUri { get; set; } - - /// - /// OAuth2 refresh token. - /// - /// This setting is applicable only when using OAuth2 web / application - /// flow in offline mode. - string OAuth2RefreshToken { get; set; } - - /// - /// Gets or sets the OAuth2 scope. - /// - string OAuth2Scope { get; set; } - - /// - /// Gets or sets the OAuth2 prn email. - /// - /// This setting is applicable only when using OAuth2 service accounts. - /// - string OAuth2PrnEmail { get; set; } - - /// - /// Gets or sets the OAuth2 secrets JSON file. - /// - /// This setting is applicable only when using OAuth2 service accounts. - /// - string OAuth2SecretsJsonPath { get; set; } - - /// - /// Gets the OAuth2 private key for service account flow. - /// - /// - /// This setting is applicable only when using OAuth2 service accounts. - /// This setting is read directly from the file referred to in - /// setting. - /// - string OAuth2PrivateKey { get; } - - /// - /// Gets the OAuth2 service account email. - /// - /// This setting is applicable only when using OAuth2 service accounts. - /// This property is read directly from the file pointed to by - /// OAuth2SecretsJsonPath property. - /// - string OAuth2ServiceAccountEmail { get; } - - /// - /// Gets or sets whether usage information of various client library - /// features should be included in the user agent. - /// - bool IncludeUtilitiesInUserAgent { get; set; } - - /// - /// Occurs when a property is changed. - /// - event PropertyChangedEventHandler PropertyChanged; - - /// - /// Gets the web proxy to be used with the services. - /// - IWebProxy Proxy { get; set; } - - /// - /// Gets or sets the number of times to retry a call if an API call fails - /// and can be retried. - /// - int RetryCount { get; set; } - - /// - /// Gets the signature for this library. - /// - string Signature { get; } - - /// - /// Gets or sets the timeout for Ads services in milliseconds. - /// - int Timeout { get; set; } - - /// - /// Gets or sets whether gzip compression should be turned on for SOAP - /// requests and responses. - /// - bool EnableGzipCompression { get; set; } - - /// - /// Gets the number of seconds after Jan 1, 1970, 00:00:00 - /// - long UnixTimestamp { get; } - - /// - /// Gets or sets whether SOAP listener extensions should be turned - /// on for logging. - /// - bool EnableSoapExtension { get; set; } - - /// - /// Gets the default OAuth2 scope. - /// - string GetDefaultOAuth2Scope(); - - /// - /// Gets the user agent text. - /// - /// The user agent. - string GetUserAgent(); - } -} diff --git a/dfp/src/Common/Lib/AppConfigBase.cs b/dfp/src/Common/Lib/AppConfigBase.cs deleted file mode 100755 index f72e7c073b0..00000000000 --- a/dfp/src/Common/Lib/AppConfigBase.cs +++ /dev/null @@ -1,759 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; - -using System; -using System.Collections; -using System.Collections.Generic; -using System.ComponentModel; -using System.Configuration; -using System.IO; -using System.Linq; -using System.Net; -using System.Reflection; -using System.Web.Script.Serialization; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// This class reads the configuration keys from App.config. - /// - public class AppConfigBase : INotifyPropertyChanged, AppConfig { - - /// - /// The registry for saving feature usage information.. - /// - private static readonly AdsFeatureUsageRegistry featureUsageRegistry = - AdsFeatureUsageRegistry.Instance; - - /// - /// The short name to identify this assembly. - /// - private const string SHORT_NAME = "Common-Dotnet"; - - /// - /// Key name for proxyServer. - /// - private const string PROXY_SERVER = "ProxyServer"; - - /// - /// Key name for proxyUser. - /// - private const string PROXY_USER = "ProxyUser"; - - /// - /// Key name for proxyPassword. - /// - private const string PROXY_PASSWORD = "ProxyPassword"; - - /// - /// Key name for proxyDomain. - /// - private const string PROXY_DOMAIN = "ProxyDomain"; - - /// - /// Key name for maskCredentials. - /// - private const string MASK_CREDENTIALS = "MaskCredentials"; - - /// - /// Key name for timeout. - /// - private const string TIMEOUT = "Timeout"; - - /// - /// Key name for retryCount. - /// - private const string RETRYCOUNT = "RetryCount"; - - /// - /// Key name for enableGzipCompression. - /// - private const string ENABLE_GZIP_COMPRESSION = "EnableGzipCompression"; - - /// - /// Key name for OAuth2 mode. - /// - private const string OAUTH2_MODE = "OAuth2Mode"; - - /// - /// Key name for OAuth2 server. - /// - private const string OAUTH2_SERVER_URL = "OAuth2ServerUrl"; - - /// - /// Key name for OAuth2 client id. - /// - private const string OAUTH2_CLIENTID = "OAuth2ClientId"; - - /// - /// Key name for OAuth2 client secret. - /// - private const string OAUTH2_CLIENTSECRET = "OAuth2ClientSecret"; - - /// - /// Key name for OAuth2 access token. - /// - private const string OAUTH2_ACCESSTOKEN = "OAuth2AccessToken"; - - /// - /// Key name for OAuth2 refresh token. - /// - private const string OAUTH2_REFRESHTOKEN = "OAuth2RefreshToken"; - - /// - /// Key name for OAuth2 scope. - /// - private const string OAUTH2_SCOPE = "OAuth2Scope"; - - /// - /// Key name for redirect uri. - /// - private const string OAUTH2_REDIRECTURI = "OAuth2RedirectUri"; - - /// - /// Key name for prn account email. - /// - private const string OAUTH2_PRN_EMAIL = "OAuth2PrnEmail"; - - /// - /// Key name for OAuth2 secrets JSON file path. - /// - private const string OAUTH2_SECRETS_JSON_PATH = "OAuth2SecretsJsonPath"; - - /// - /// Key name for includeFeaturesInUserAgent. - /// - private const string INCLUDE_FEATURES_IN_USERAGENT = "IncludeUtilitiesInUserAgent"; - - /// - /// Key name for enableSoapExtension. - /// - private const string ENABLE_SOAP_EXTENSION = "EnableSoapExtension"; - - /// - /// Web proxy to be used with the services. - /// - private IWebProxy proxy; - - /// - /// True, if the credentials in the log file should be masked. - /// - private bool maskCredentials; - - /// - /// Timeout to be used for Ads services in milliseconds. - /// - private int timeout; - - /// - /// Number of times to retry a call if an API call fails and can be retried. - /// - private int retryCount; - - /// - /// True, if gzip compression should be turned on for SOAP requests and - /// responses. - /// - private bool enableGzipCompression; - - /// - /// OAuth2 client ID. - /// - private string oAuth2ClientId; - - /// - /// OAuth2 server URL. - /// - private string oAuth2ServerUrl; - - /// - /// OAuth2 client secret. - /// - private string oAuth2ClientSecret; - - /// - /// OAuth2 access token. - /// - private string oAuth2AccessToken; - - /// - /// OAuth2 refresh token. - /// - private string oAuth2RefreshToken; - - /// - /// OAuth2 prn email. - /// - private string oAuth2PrnEmail; - - /// - /// OAuth2 service account email loaded from secrets JSON file. - /// - private string oAuth2ServiceAccountEmail; - - /// - /// OAuth2 private key loaded from secrets JSON file. - /// - private string oAuth2PrivateKey; - - /// - /// OAuth2 secrets JSON file path. - /// - private string oAuth2SecretsJsonPath; - - /// - /// OAuth2 scope. - /// - private string oAuth2Scope; - - /// - /// Redirect uri. - /// - private string oAuth2RedirectUri; - - /// - /// OAuth2 mode. - /// - private OAuth2Flow oAuth2Mode; - - /// - /// True, if SOAP extensions for logging should be turned on. - /// - private bool enableSoapExtension; - - /// - /// True, if the usage of a feature should be added to the user agent, - /// false otherwise. - /// - private static bool includeFeaturesInUserAgent; - - /// - /// Default value for number of times to retry a call if an API call fails - /// and can be retried. - /// - private const int DEFAULT_RETRYCOUNT = 0; - - /// - /// Default value for timeout for Ads services. - /// - private const int DEFAULT_TIMEOUT = -1; - - /// - /// The default value of OAuth2 server URL. - /// - private const string DEFAULT_OAUTH2_SERVER = "https://accounts.google.com"; - - /// - /// Gets or sets whether the credentials in the log file should be masked. - /// - public bool MaskCredentials { - get { - return maskCredentials; - } - protected set { - maskCredentials = value; - } - } - - /// - /// Gets or sets the web proxy to be used with the services. - /// - public IWebProxy Proxy { - get { - return proxy; - } - set { - SetPropertyField("Proxy", ref proxy, value); - } - } - - /// - /// Gets or sets the timeout for Ads services in milliseconds. - /// - public int Timeout { - get { - return timeout; - } - set { - SetPropertyField(TIMEOUT, ref timeout, value); - } - } - - /// - /// Gets or sets the number of times to retry a call if an API call fails - /// and can be retried. - /// - public int RetryCount { - get { - return retryCount; - } - set { - SetPropertyField(RETRYCOUNT, ref retryCount, value); - } - } - - /// - /// Gets or sets whether gzip compression should be turned on for SOAP - /// requests and responses. - /// - public bool EnableGzipCompression { - get { - return enableGzipCompression; - } - set { - SetPropertyField(ENABLE_GZIP_COMPRESSION, ref enableGzipCompression, value); - } - } - - /// - /// Gets or sets the OAuth2 server URL. - /// - /// This property's setter is primarily used for testing purposes. - /// - public string OAuth2ServerUrl { - get { - return oAuth2ServerUrl; - } - set { - SetPropertyField(OAUTH2_SERVER_URL, ref oAuth2ServerUrl, value); - } - } - - /// - /// Gets or sets the OAuth2 client ID. - /// - public string OAuth2ClientId { - get { - return oAuth2ClientId; - } - set { - SetPropertyField(OAUTH2_CLIENTID, ref oAuth2ClientId, value); - } - } - - /// - /// Gets or sets the OAuth2 client secret. - /// - public string OAuth2ClientSecret { - get { - return oAuth2ClientSecret; - } - set { - SetPropertyField(OAUTH2_CLIENTSECRET, ref oAuth2ClientSecret, value); - } - } - - /// - /// Gets or sets the OAuth2 access token. - /// - public string OAuth2AccessToken { - get { - return oAuth2AccessToken; - } - set { - SetPropertyField(OAUTH2_ACCESSTOKEN, ref oAuth2AccessToken, value); - } - } - - /// - /// Gets or sets the OAuth2 refresh token. - /// - /// This setting is applicable only when using OAuth2 web / application - /// flow in offline mode. - public string OAuth2RefreshToken { - get { - return oAuth2RefreshToken; - } - set { - SetPropertyField(OAUTH2_REFRESHTOKEN, ref oAuth2RefreshToken, value); - } - } - - /// - /// Gets or sets the OAuth2 scope. - /// - public string OAuth2Scope { - get { - return oAuth2Scope; - } - set { - SetPropertyField(OAUTH2_SCOPE, ref oAuth2Scope, value); - } - } - - /// - /// Gets or sets the OAuth2 redirect URI. - /// - /// This setting is applicable only when using OAuth2 web flow. - /// - public string OAuth2RedirectUri { - get { - return oAuth2RedirectUri; - } - set { - SetPropertyField(OAUTH2_REDIRECTURI, ref oAuth2RedirectUri, value); - } - } - - /// - /// Gets or sets the OAuth2 mode. - /// - public OAuth2Flow OAuth2Mode { - get { - return oAuth2Mode; - } - set { - SetPropertyField(OAUTH2_MODE, ref oAuth2Mode, value); - } - } - - /// - /// Gets or sets the OAuth2 prn email. - /// - /// This setting is applicable only when using OAuth2 service accounts. - /// - public string OAuth2PrnEmail { - get { - return oAuth2PrnEmail; - } - set { - SetPropertyField(OAUTH2_PRN_EMAIL, ref oAuth2PrnEmail, value); - } - } - - /// - /// Gets the OAuth2 service account email. - /// - /// - /// This setting is applicable only when using OAuth2 service accounts. - /// This setting is read directly from the file referred to in - /// setting. - /// - public string OAuth2ServiceAccountEmail { - get { - return oAuth2ServiceAccountEmail; - } - } - - /// - /// Gets the OAuth2 private key for service account flow. - /// - /// - /// This setting is applicable only when using OAuth2 service accounts. - /// This setting is read directly from the file referred to in - /// setting. - /// - public string OAuth2PrivateKey { - get { - return oAuth2PrivateKey; - } - } - - /// - /// Gets or sets the OAuth2 secrets JSON file path. - /// - /// - /// This setting is applicable only when using OAuth2 service accounts. - /// - public string OAuth2SecretsJsonPath { - get { - return oAuth2SecretsJsonPath; - } - set { - SetPropertyField(OAUTH2_SECRETS_JSON_PATH, ref oAuth2SecretsJsonPath, value); - LoadOAuth2SecretsFromFile(); - } - } - - /// - /// Gets or sets whether SOAP extensions should be turned on for - /// logging. - /// - public bool EnableSoapExtension { - get { - return enableSoapExtension; - } - set { - SetPropertyField(ENABLE_SOAP_EXTENSION, ref enableSoapExtension, value); - } - } - - /// - /// Gets or sets whether usage of various client library features should be - /// tracked. - /// - /// The name of the property is kept different to match the setting - /// name for other client libraries. - public bool IncludeUtilitiesInUserAgent { - get { - return includeFeaturesInUserAgent; - } - set { - SetPropertyField(INCLUDE_FEATURES_IN_USERAGENT, ref includeFeaturesInUserAgent, value); - } - } - - /// - /// Gets the default OAuth2 scope. - /// - public virtual string GetDefaultOAuth2Scope() { - return ""; - } - - /// - /// Gets the user agent text. - /// - /// The user agent. - public virtual string GetUserAgent() { - return ""; - } - - /// - /// Gets the signature for this assembly, given a type derived from - /// AppConfigBase. - /// - /// Type of the class derived from AppConfigBase. - /// The assembly signature. - /// Thrown if type is not derived from - /// AppConfigBase. - private string GetAssemblySignatureFromAppConfigType(Type type) { - Type appConfigBaseType = typeof(AppConfigBase); - if (!(type.BaseType == appConfigBaseType || type == appConfigBaseType)) { - throw new ArgumentException(string.Format("{0} is not derived from {1}.", - type.FullName, appConfigBaseType.FullName)); - } - Version version = type.Assembly.GetName().Version; - string shortName = (string) type.GetField("SHORT_NAME", BindingFlags.NonPublic | - BindingFlags.Static).GetValue(null); - return string.Format("{0}/{1}.{2}.{3}", shortName, version.Major, version.Minor, - version.Revision); - } - - /// - /// Gets the signature for this library. - /// - public string Signature { - get { - string utilsAgent = (this.IncludeUtilitiesInUserAgent) ? featureUsageRegistry.Text : ""; - return string.Format("{0}, {1}, .NET CLR/{2}, {3}", - GetAssemblySignatureFromAppConfigType(this.GetType()), - GetAssemblySignatureFromAppConfigType(this.GetType().BaseType), Environment.Version, - utilsAgent); - } - } - - /// - /// Gets the number of seconds after Jan 1, 1970, 00:00:00 - /// - public virtual long UnixTimestamp { - get { - TimeSpan unixTime = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)); - return (long) unixTime.TotalSeconds; - } - } - - /// - /// Default constructor for the object. - /// - public AppConfigBase() { - proxy = null; - maskCredentials = true; - timeout = DEFAULT_TIMEOUT; - enableGzipCompression = true; - oAuth2Mode = OAuth2Flow.APPLICATION; - oAuth2ServerUrl = DEFAULT_OAUTH2_SERVER; - oAuth2ClientId = ""; - oAuth2ClientSecret = ""; - oAuth2AccessToken = ""; - oAuth2RefreshToken = ""; - oAuth2Scope = ""; - oAuth2RedirectUri = null; - oAuth2PrnEmail = ""; - oAuth2ServiceAccountEmail = ""; - oAuth2PrivateKey = ""; - oAuth2SecretsJsonPath = ""; - - includeFeaturesInUserAgent = true; - enableSoapExtension = true; - } - - /// - /// Attempts to load the configuration section with the given name. - /// - /// The name of the configuration section to load. - /// - /// The request configuration section, or null if none was found. - /// - protected Dictionary LoadConfigSection(string sectionName) { - Hashtable configTable = (Hashtable) ConfigurationManager.GetSection(sectionName); - - Dictionary configDict = null; - if (configTable != null) { - configDict = configTable.Cast().ToDictionary( - setting => setting.Key.ToString(), - setting => setting.Value.ToString()); - } - - return configDict; - } - - /// - /// Read all settings from App.config. - /// - /// The parsed app.config settings. - protected virtual void ReadSettings(Dictionary settings) { - // Common keys. - string proxyUrl = ReadSetting(settings, PROXY_SERVER, ""); - - if (!string.IsNullOrEmpty(proxyUrl)) { - WebProxy proxy = new WebProxy(); - proxy.Address = new Uri(proxyUrl); - - string proxyUser = ReadSetting(settings, PROXY_USER, ""); - string proxyPassword = ReadSetting(settings, PROXY_PASSWORD, ""); - string proxyDomain = ReadSetting(settings, PROXY_DOMAIN, ""); - - if (!string.IsNullOrEmpty(proxyUrl)) { - proxy.Credentials = new NetworkCredential(proxyUser, - proxyPassword, proxyDomain); - } - this.proxy = proxy; - } else { - // System.Net.WebRequest will find a proxy if needed. - this.proxy = null; - } - maskCredentials = bool.Parse(ReadSetting(settings, MASK_CREDENTIALS, - maskCredentials.ToString())); - - Enum.TryParse(ReadSetting(settings, OAUTH2_MODE, oAuth2Mode.ToString()), - out oAuth2Mode); - - oAuth2ServerUrl = ReadSetting(settings, OAUTH2_SERVER_URL, oAuth2ServerUrl); - oAuth2ClientId = ReadSetting(settings, OAUTH2_CLIENTID, oAuth2ClientId); - oAuth2ClientSecret = ReadSetting(settings, OAUTH2_CLIENTSECRET, oAuth2ClientSecret); - oAuth2AccessToken = ReadSetting(settings, OAUTH2_ACCESSTOKEN, oAuth2AccessToken); - oAuth2RefreshToken = ReadSetting(settings, OAUTH2_REFRESHTOKEN, oAuth2RefreshToken); - oAuth2Scope = ReadSetting(settings, OAUTH2_SCOPE, oAuth2Scope); - oAuth2RedirectUri = ReadSetting(settings, OAUTH2_REDIRECTURI, oAuth2RedirectUri); - - // Read and parse the OAuth2 JSON secrets file if applicable. - oAuth2SecretsJsonPath = ReadSetting(settings, OAUTH2_SECRETS_JSON_PATH, - oAuth2SecretsJsonPath); - - if (!string.IsNullOrEmpty(oAuth2SecretsJsonPath)) { - LoadOAuth2SecretsFromFile(); - } - - oAuth2PrnEmail = ReadSetting(settings, OAUTH2_PRN_EMAIL, oAuth2PrnEmail); - - int.TryParse(ReadSetting(settings, TIMEOUT, timeout.ToString()), out timeout); - int.TryParse(ReadSetting(settings, RETRYCOUNT, retryCount.ToString()), out retryCount); - bool.TryParse(ReadSetting(settings, ENABLE_GZIP_COMPRESSION, - enableGzipCompression.ToString()), out enableGzipCompression); - - bool.TryParse(ReadSetting(settings, INCLUDE_FEATURES_IN_USERAGENT, - includeFeaturesInUserAgent.ToString()), out includeFeaturesInUserAgent); - } - - /// - /// Loads the OAuth2 private key and service account email settings from the - /// secrets JSON file. - /// - private void LoadOAuth2SecretsFromFile() { - try { - using (StreamReader reader = new StreamReader(OAuth2SecretsJsonPath)) { - string contents = reader.ReadToEnd(); - JavaScriptSerializer serializer = new JavaScriptSerializer(); - Dictionary config = - serializer.Deserialize>(contents); - - this.oAuth2ServiceAccountEmail = CollectionUtilities.TryGetValue(config, "client_email"); - if (this.OAuth2ServiceAccountEmail == null) { - throw new ApplicationException(CommonErrorMessages.ClientEmailIsMissingInJsonFile); - } - - this.oAuth2PrivateKey = CollectionUtilities.TryGetValue(config, "private_key"); - if (this.OAuth2PrivateKey == null) { - throw new ApplicationException(CommonErrorMessages.PrivateKeyIsMissingInJsonFile); - } - } - } catch (Exception e) { - throw new AdsOAuthException(CommonErrorMessages.FailedToLoadJsonSecretsFile, e); - } - } - - /// - /// Reads a setting from a given NameValueCollection, and sets - /// default value if the key is not available in the collection. - /// - /// The settings collection from which the keys - /// are to be read. - /// Key name to be read. - /// Default value for the key. - /// Actual value from settings, or defaultValue if settings - /// does not have this key. - protected static string ReadSetting(Dictionary settings, string key, - string defaultValue) { - if (settings == null) { - return defaultValue; - } else { - return CollectionUtilities.TryGetValue(settings, key, defaultValue); - } - } - - /// - /// Raises the event. - /// - /// The - /// instance containing the event data. - protected void OnPropertyChanged(PropertyChangedEventArgs e) { - PropertyChangedEventHandler handler = PropertyChanged; - if (handler != null) { - handler(this, e); - } - } - - /// - /// Sets the specified property field. - /// - /// Type of the property field to be set. - /// Name of the property. - /// The property field to be set. - /// The new value to be set to the propery. - protected void SetPropertyField(string propertyName, ref T field, T newValue) { - if (!EqualityComparer.Default.Equals(field, newValue)) { - field = newValue; - OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); - } - } - - /// - /// Occurs when a property value changes. - /// - public event PropertyChangedEventHandler PropertyChanged; - - /// - /// Creates a new object that is a copy of the current instance. - /// - /// - /// A new object that is a copy of this instance. - /// - public virtual object Clone() { - return this.MemberwiseClone(); - } - } -} diff --git a/dfp/src/Common/Lib/Configurable.cs b/dfp/src/Common/Lib/Configurable.cs deleted file mode 100755 index 431ec7fc18b..00000000000 --- a/dfp/src/Common/Lib/Configurable.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Marks a class as configurable. - /// - public interface Configurable { - /// - /// Gets the application configuration class for this object. - /// - AppConfig Config { get; } - } -} diff --git a/dfp/src/Common/Lib/ContextStore.cs b/dfp/src/Common/Lib/ContextStore.cs deleted file mode 100755 index 491cc602a31..00000000000 --- a/dfp/src/Common/Lib/ContextStore.cs +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Runtime.Remoting.Messaging; -using System.Web; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// This class provides access to the call context, and hides the differences - /// when the library is running as a web application or a normal application. - /// - public class ContextStore { - - /// - /// Adds a key-value pair to the context store. - /// - /// The key for the value being stored. - /// The value being stored. - public static void AddKey(string key, object value) { - if (HttpContext.Current != null) { - HttpContext.Current.Items[key] = value; - } else { - CallContext.SetData(key, value); - } - } - - /// - /// Removes a stored value from the context store. - /// - /// The key for the value to be removed. - public static void RemoveKey(string key) { - if (HttpContext.Current != null) { - HttpContext.Current.Items.Remove(key); - } else { - CallContext.FreeNamedDataSlot(key); - } - } - - /// - /// Gets the value of an item stored in the context store. - /// - /// The key for which value should be retrieved. - /// The object's value, or null if the key is missing. - public static object GetValue(string key) { - if (HttpContext.Current != null) { - if (HttpContext.Current.Items.Contains(key)) { - return HttpContext.Current.Items[key]; - } else { - return null; - } - } else { - return CallContext.GetData(key); - } - } - } -} diff --git a/dfp/src/Common/Lib/ErrorHandler.cs b/dfp/src/Common/Lib/ErrorHandler.cs deleted file mode 100755 index 13e5eb8efe8..00000000000 --- a/dfp/src/Common/Lib/ErrorHandler.cs +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Threading; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// Handles errors for an Ads API. - /// - public class ErrorHandler { - - /// - /// Wait time in ms to wait before retrying a call. The actual retry time - /// will be higher due to exponential backoff. - /// - protected const int WAIT_TIME = 30000; - - /// - /// The application configuration. - /// - protected readonly AppConfig config; - - /// - /// Number of retry attempts made. - /// - private int numRetries = 0; - - /// - /// Initializes a new instance of the class. - /// - /// The application configuration instance. - public ErrorHandler(AppConfig config) { - this.config = config; - } - - /// - /// Does the exponential backoff. - /// - public virtual void DoExponentialBackoff() { - Thread.Sleep(WAIT_TIME * (int) Math.Pow(2, this.numRetries)); - } - - /// - /// Checks if there are more retry attempts left. - /// - /// True, if there are more retry attempts left, false otherwise. - /// - public virtual bool HaveMoreRetryAttemptsLeft() { - return numRetries < config.RetryCount; - } - - /// - /// Increment the counter for attempts retried. - /// - public virtual void IncrementRetriedAttempts() { - this.numRetries++; - } - - /// - /// Determines whether the exception thrown by the server is a transient - /// error. - /// The exception. - /// True, if the server exception is a transient error, false - /// otherwise. - public virtual bool IsTransientError(Exception exception) { - return false; - } - - /// - /// Prepares the system for retrying the last failed call. - /// - /// The exception. - public virtual void PrepareForRetry(Exception exception) { - } - - /// - /// Checks if an API call should be retried when an exception occurs. - /// - /// The exception. - /// True, if the call should be retried, false otherwise. - public virtual bool ShouldRetry(Exception exception) { - return false; - } - } -} diff --git a/dfp/src/Common/Lib/OAuth2JwtClaimset.cs b/dfp/src/Common/Lib/OAuth2JwtClaimset.cs deleted file mode 100755 index d2e1d1bf21c..00000000000 --- a/dfp/src/Common/Lib/OAuth2JwtClaimset.cs +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Text; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// An OAuth2 Service Account claimset. - /// - public class OAuth2JwtClaimset { - - /// - /// Gets or sets the scope for the claimset. - /// - public string scope { get; set; } - - /// - /// Gets or sets the audience for the claimset. - /// - public string audience { get; set; } - - /// - /// Gets or sets the service account email for the claimset. - /// - public string serviceAccountEmail { get; set; } - - /// - /// Gets or sets the email of the user for the claimset. - /// - public string impersonationEmail { get; set; } - - /// - /// Gets or sets the timestamp for the claimset. - /// - public long timestamp { get; set; } - - /// - /// Gets or sets the expiry for the claimset. - /// - public long expiry { get; set; } - - /// - /// Serializes a JWT claimset into a JSON string. - /// - /// A JWT claimset JSON string - public string ToJson() { - StringBuilder sb = new StringBuilder(); - sb.Append("{") - .AppendFormat("\"iss\":\"{0}\"", serviceAccountEmail) - .AppendFormat(", \"scope\":\"{0}\"", scope) - .AppendFormat(", \"aud\":\"{0}\"", audience) - .AppendFormat(", \"exp\":{0}", expiry) - .AppendFormat(", \"iat\":{0}", timestamp); - - if (!string.IsNullOrEmpty(impersonationEmail)) { - sb.AppendFormat(", \"prn\":\"{0}\"", impersonationEmail); - } - - sb.Append("}"); - return sb.ToString(); - } - } -} diff --git a/dfp/src/Common/Lib/OAuth2JwtClaimsetBuilder.cs b/dfp/src/Common/Lib/OAuth2JwtClaimsetBuilder.cs deleted file mode 100755 index 960a0fd3ae3..00000000000 --- a/dfp/src/Common/Lib/OAuth2JwtClaimsetBuilder.cs +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// Builder utility for OAuth2 Service Account claimsets. - /// - public class OAuth2JwtClaimsetBuilder { - - /// - /// Gets or sets the scope for the claimset. - /// - public string scope { get; set; } - - /// - /// Gets or sets the audience for the claimset. - /// - public string audience { get; set; } - - /// - /// Gets or sets the service account email for the claimset. - /// - public string serviceAccountEmail { get; set; } - - /// - /// Gets or sets the email of the user for the claimset. - /// - public string impersonationEmail { get; set; } - - /// - /// Gets or sets the timestamp for the claimset. - /// - public long timestamp { get; set; } - - /// - /// Gets or sets the expiry for the claimset. - /// - public long expiry { get; set; } - - /// - /// Sets the scope for the claimset. - /// - /// The scope for the claimset - /// This builder, for chaining method calls - public OAuth2JwtClaimsetBuilder WithScope(string scope) { - this.scope = scope; - return this; - } - - /// - /// Sets the audience for the claimset. - /// - /// The audience for the claimset - /// This builder, for chaining method calls - public OAuth2JwtClaimsetBuilder WithAudience(string audience) { - this.audience = audience; - return this; - } - - /// - /// Sets the service account email for the claimset. - /// - /// The service account email for the claimset - /// This builder, for chaining method calls - public OAuth2JwtClaimsetBuilder WithServiceAccountEmail(string serviceAccountEmail) { - this.serviceAccountEmail = serviceAccountEmail; - return this; - } - - /// - /// Sets the email of the user for the claimset. - /// - /// The email of the user for the claimset - /// This builder, for chaining method calls - public OAuth2JwtClaimsetBuilder WithImpersonationEmail(string impersonationEmail) { - this.impersonationEmail = impersonationEmail; - return this; - } - - /// - /// Sets the timestamp for the claimset. - /// - /// The timestamp for the claimset - /// This builder, for chaining method calls - public OAuth2JwtClaimsetBuilder WithTimestamp(long timestamp) { - this.timestamp = timestamp; - return this; - } - - /// - /// Sets the expiry for the claimset. - /// - /// The expiry for the claimset - /// This builder, for chaining method calls - public OAuth2JwtClaimsetBuilder WithExpiry(long expiry) { - this.expiry = expiry; - return this; - } - - /// - /// Builds a JWT claimset from the current builder settings. - /// - /// A JWT claimset - public OAuth2JwtClaimset Build() { - OAuth2JwtClaimset claimset = new OAuth2JwtClaimset(); - claimset.scope = this.scope; - claimset.audience = this.audience; - claimset.serviceAccountEmail = this.serviceAccountEmail; - claimset.impersonationEmail = this.impersonationEmail; - claimset.timestamp = this.timestamp; - claimset.expiry = this.expiry; - return claimset; - } - } -} diff --git a/dfp/src/Common/Lib/OAuth2ProviderBase.cs b/dfp/src/Common/Lib/OAuth2ProviderBase.cs deleted file mode 100755 index 84a140727c3..00000000000 --- a/dfp/src/Common/Lib/OAuth2ProviderBase.cs +++ /dev/null @@ -1,468 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; -using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Crypto.Parameters; -using Org.BouncyCastle.Pkcs; -using Org.BouncyCastle.Security; -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Security.Cryptography; -using System.Web.Script.Serialization; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// Base class which provides OAuth authorization mechanism for Ads services. - /// - public abstract class OAuth2ProviderBase : AdsOAuthProvider { - - /// - /// The registry for saving feature usage information.. - /// - protected readonly AdsFeatureUsageRegistry featureUsageRegistry = - AdsFeatureUsageRegistry.Instance; - - /// - /// Gets the OAuth2 server URL. - /// - protected string OAUTH_SERVER { - get { - return Config.OAuth2ServerUrl; - } - } - - /// - /// The OAuth2 endpoint for obtaining an authorization token. - /// - protected string AUTH_ENDPOINT { - get { - return OAUTH_SERVER + "/o/oauth2/auth"; - } - } - - /// - /// The OAuth2 endpoint for obtaining or refreshing an access token. - /// - protected string TOKEN_ENDPOINT { - get { - return OAUTH_SERVER + "/o/oauth2/token"; - } - } - - /// - /// The OAuth2 tokens will be refreshed automatically if the time left for - /// access token expiry is less than this value in seconds. - /// - private int oAuth2RefreshCutoffLimit = 60; - - /// - /// A parameter that your application can use for keeping state. The - /// OAuth Authorization Server roundtrips this parameter. - /// - private string state; - - /// - /// Indicates the type of token returned by the server. This field will - /// always have the value Bearer for now. - /// - private string tokenType; - - /// - /// The time at which access token was updated. - /// - private DateTime updatedOn = DateTime.MinValue; - - /// - /// The remaining lifetime on the access token. - /// - private int expiresIn; - - /// - /// The configuration object to be used with this client. - /// - protected AppConfig config = null; - - /// - /// The prefix text used by Google for the private key property in the JSON - /// secrets file. - /// - private const string PRIVATE_KEY_PREFIX = "-----BEGIN PRIVATE KEY-----"; - - /// - /// The suffix text used by Google for the private key property in the JSON - /// secrets file. - /// - private const string PRIVATE_KEY_SUFFIX = "-----END PRIVATE KEY-----"; - - /// - /// The list of headers to mask in the logs. - /// - private readonly ISet REQUEST_HEADERS_TO_MASK = new HashSet() { - "client_secret", - "refresh_token" - }; - - /// - /// The list of fields to mask in the response logs. - /// - private readonly ISet RESPONSE_FIELDS_TO_MASK = new HashSet() { - "access_token" - }; - - /// - /// Callback triggered when this provider obtains a new access token or - /// refresh token from the OAuth server. - /// - private OAuthTokensObtainedCallback oAuthTokensObtained = - new OAuthTokensObtainedCallback(TokensUpdatedCallback); - - /// - /// Gets the config. - /// - public AppConfig Config { - get { - return config; - } - } - - /// - /// Gets or sets the client that is making the request. This value is - /// obtained from the - /// API console during application registration. - /// - public string ClientId { - get { - return config.OAuth2ClientId; - } - set { - config.OAuth2ClientId = value; - } - } - - /// - /// Gets or sets the client secret obtained from the - /// API console - /// during application registration.during application registration. - /// - public string ClientSecret { - get { - return config.OAuth2ClientSecret; - } - set { - config.OAuth2ClientSecret = value; - } - } - - /// - /// Gets or sets the API access your application is requesting. This is - /// space delimited. - /// - public string Scope { - get { - return config.OAuth2Scope; - } - set { - config.OAuth2Scope = value; - } - } - - /// - /// Gets or sets a parameter that your application can use for keeping - /// state. The OAuth Authorization Server roundtrips this parameter. - /// - public string State { - get { - return state; - } - set { - state = value; - } - } - - /// - /// Gets the type of token returned by the server. This field will - /// always have the value Bearer for now. - /// - public string TokenType { - get { - return tokenType; - } - } - - /// - /// Gets or sets the token that can be sent to a Google API for - /// authentication. - /// - public string AccessToken { - get { - return config.OAuth2AccessToken; - } - set { - config.OAuth2AccessToken = value; - } - } - - /// - /// Gets or sets a token that may be used to obtain a new access token. - /// Refresh tokens are valid until the user revokes access. - /// - public string RefreshToken { - get { - return config.OAuth2RefreshToken; - } - set { - config.OAuth2RefreshToken = value; - } - } - - /// - /// Gets or sets the time at which access token was retrieved. - /// - public DateTime UpdatedOn { - get { - return updatedOn; - } - set { - updatedOn = value; - } - } - - /// - /// Gets the remaining lifetime on the access token. - /// - public int ExpiresIn { - get { - return expiresIn; - } - set { - expiresIn = value; - } - } - - /// - /// Callback triggered when this provider obtains a new access token or - /// refresh token from the OAuth server. - /// - public OAuthTokensObtainedCallback OnOAuthTokensObtained { - get { - return oAuthTokensObtained; - } - set { - oAuthTokensObtained = value; - } - } - - /// - /// Gets or sets the OAuth2 refresh cutoff limit. - /// - public int OAuth2RefreshCutoffLimit { - get { - return oAuth2RefreshCutoffLimit; - } - set { - oAuth2RefreshCutoffLimit = value; - } - } - - /// - /// Initializes a new instance of the class. - /// - /// The config. - public OAuth2ProviderBase(AppConfig config) { - this.config = config; - } - - /// - /// Gets the auth header. - /// - /// The auth header. - public virtual string GetAuthHeader() { - RefreshAccessTokenIfExpiring(); - return "Bearer " + this.AccessToken; - } - - /// - /// Refreshes the access token if expiring. - /// - public virtual void RefreshAccessTokenIfExpiring() { - if (IsAccessTokenExpiring()) { - RefreshAccessToken(); - } - } - - /// - /// Refreshes the access token if expiring. - /// - public abstract void RefreshAccessToken(); - - /// - /// Determines whether the access token for the provider is expiring. - /// - /// True if the token is expiring, false otherwise. - private bool IsAccessTokenExpiring() { - if (this.UpdatedOn == DateTime.MinValue) { - return true; - } - return this.UpdatedOn + - new TimeSpan(0, 0, this.ExpiresIn - oAuth2RefreshCutoffLimit) < DateTime.UtcNow; - } - - /// - /// Calls the token endpoint to obtain an access token. - /// - /// The request body. - protected void CallTokenEndpoint(string body) { - WebRequest request = HttpUtilities.BuildRequest(TOKEN_ENDPOINT, "POST", config); - request.ContentType = "application/x-www-form-urlencoded"; - - LogEntry logEntry = new LogEntry(config, new DefaultDateTimeProvider()); - WebResponse response = null; - - try { - HttpUtilities.WritePostBodyAndLog(request, body, logEntry, REQUEST_HEADERS_TO_MASK); - response = request.GetResponse(); - - string contents = MediaUtilities.GetStreamContentsAsString(response.GetResponseStream()); - logEntry.LogResponse(new ResponseInfo(response, contents), false, RESPONSE_FIELDS_TO_MASK, - new JsonBodyFormatter()); - logEntry.Flush(); - - Dictionary values = ParseJsonObjectResponse(contents); - this.AccessToken = - CollectionUtilities.TryGetValue(values, "access_token", this.AccessToken); - this.RefreshToken = - CollectionUtilities.TryGetValue(values, "refresh_token", this.RefreshToken); - this.tokenType = - CollectionUtilities.TryGetValue(values, "token_type", this.tokenType); - this.expiresIn = int.Parse( - CollectionUtilities.TryGetValue(values, "expires_in", this.expiresIn.ToString())); - this.updatedOn = DateTime.UtcNow; - - if (this.OnOAuthTokensObtained != null) { - this.OnOAuthTokensObtained(this); - } - } catch (WebException e) { - string contents = HttpUtilities.GetErrorResponseBody(e); - logEntry.LogResponse(new ResponseInfo(response, contents), true, RESPONSE_FIELDS_TO_MASK, - new JsonBodyFormatter()); - logEntry.Flush(); - - throw new ApplicationException(contents, e); - } finally { - if (response != null) { - response.Close(); - } - } - } - - /// - /// Converts the PKCS8 private key to RSA parameters. - /// - /// The private key read from the JSON secrets file. - /// The RSA parameters for generating signature. - protected static RSAParameters ConvertPKCS8ToRsaParameters(string privateKey) { - var base64PrivateKey = privateKey.Replace(PRIVATE_KEY_PREFIX, "").Replace("\n", "") - .Replace(PRIVATE_KEY_SUFFIX, ""); - var privateKeyBytes = Convert.FromBase64String(base64PrivateKey); - AsymmetricKeyParameter key = PrivateKeyFactory.CreateKey(privateKeyBytes); - return DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters) key); - } - - /// - /// Converts the provided P12 file to RSA parameters. - /// - /// The file system path to the P12 file. - /// The P12 file password. - /// The RSA parameters for generating signature. - protected static RSAParameters ConvertP12ToRsaParameters(String pathToP12File, - String password) { - using (FileStream stream = File.OpenRead(pathToP12File)) { - Pkcs12Store store = new Pkcs12Store(stream, password.ToCharArray()); - - foreach (string alias in store.Aliases) { - if (store.IsKeyEntry(alias)) { - AsymmetricKeyParameter key = store.GetKey(alias).Key; - if (key.IsPrivate) { - return DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters) key); - } - } - } - } - - // If we get here then no private key could be found, which warrants an error. - throw new ArgumentException(CommonErrorMessages.OAuth2JwtCertificateInvalid); - } - - /// - /// Gets the RSA sha256 signature for data. - /// - /// The RSA parameters to use for signing. - /// The data for which signature should be calculated. - /// - /// The signature. - protected static byte[] GetRsaSha256Signature(RSAParameters rsaParameters, byte[] data) { - RSACryptoServiceProvider rsaCsp = new RSACryptoServiceProvider(); - rsaCsp.ImportParameters(rsaParameters); - - byte[] signature = rsaCsp.SignData(data, "SHA256"); - bool results = rsaCsp.VerifyData(data, "SHA256", signature); - return signature; - } - - /// - /// Generates a url-safe base64 encoded string. - /// - /// The data to be base64-encoded. - /// The base64 encoded string. - protected static string Base64UrlEncode(byte[] data) { - return Convert.ToBase64String(data).Replace("=", String.Empty).Replace('+', '-'). - Replace('/', '_'); - } - - /// - /// Parses a JSON object response. - /// - /// The JSON contents. - /// A dictionary of key-value pairs. - protected Dictionary ParseJsonObjectResponse(string contents) { - JavaScriptSerializer serializer = new JavaScriptSerializer(); - return serializer.Deserialize>(contents); - } - - /// - /// Validates if a required OAuth2 parameter is null or empty. - /// - /// Name of the property. - /// The property value. - protected static void ValidateOAuth2Parameter(string propertyName, string propertyValue) { - if (string.IsNullOrEmpty(propertyValue)) { - throw new ArgumentNullException( - string.Format(CommonErrorMessages.OAuth2ParameterErrorMessage, propertyName)); - } - } - - /// - /// Default callback when this provider obtains a new access token or - /// refresh token from the OAuth server. - /// - /// The provider. - protected static void TokensUpdatedCallback(AdsOAuthProvider provider) { - } - } -} diff --git a/dfp/src/Common/Lib/OAuth2ProviderForApplications.cs b/dfp/src/Common/Lib/OAuth2ProviderForApplications.cs deleted file mode 100755 index 6444335585c..00000000000 --- a/dfp/src/Common/Lib/OAuth2ProviderForApplications.cs +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; - -using System; -using System.Collections.Generic; -using System.Net; -using System.Web; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// Provides OAuth authorization mechanism for Ads services when using Web and - /// installed application flows. - /// - public class OAuth2ProviderForApplications : OAuth2ProviderBase, - AdsOAuthProviderForApplications { - - /// - /// The feature ID for this class. - /// - private const AdsFeatureUsageRegistry.Features FEATURE_ID = - AdsFeatureUsageRegistry.Features.OAuthApplicationFlow; - - /// - /// The OAuth2 endpoint for revoking a refresh token programmatically. - /// - private string REVOKE_ENDPOINT { - get { - return OAUTH_SERVER + "/o/oauth2/revoke"; - } - } - - /// - /// The OAuth2 redirect url to be used if your application is a desktop - /// application. To use this url, your client should be registered as an - /// installed application on the - /// API console. - /// - public const string OFFLINE_REDIRECT_URL = "urn:ietf:wg:oauth:2.0:oob"; - - /// - /// Determines if the Google OAuth 2.0 endpoint returns an authorization - /// code. - /// - private const string RESPONSE_TYPE = "code"; - - /// - /// Indicates if your application needs to access APIs when the user is not - /// present at the browser. This is defaulted to true. - /// - private bool isOffline = true; - - /// - /// Indicates if your application needs to access APIs when the user is not - /// present at the browser. This is defaulted to true. - /// - public bool IsOffline { - get { - return isOffline; - } - set { - isOffline = value; - } - } - - /// - /// Gets or sets where the url where the response is sent. This should be a - /// registered redirect uri on the - /// API console. - /// - public string RedirectUri { - get { - return config.OAuth2RedirectUri; - } - set { - config.OAuth2RedirectUri = value; - } - } - - /// - /// Initializes a new instance of the OAuth2ProviderForApplications class. - /// - /// The config. - public OAuth2ProviderForApplications(AppConfig config) - : base(config) { - } - - /// - /// Builds the OAuth2 authorization url. - /// - /// The Authorization url that the user needs to visit to authorize - /// the application. - /// Thrown if one of the following - /// OAuth2 parameters are empty: Scope, ClientId - public string GetAuthorizationUrl() { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - string accessType = (isOffline) ? "offline" : "online"; - string redirectUrl = (string.IsNullOrEmpty(RedirectUri)) ? OFFLINE_REDIRECT_URL : RedirectUri; - - ValidateOAuth2Parameter("Scope", Scope); - ValidateOAuth2Parameter("ClientId", ClientId); - - return string.Format("{0}?scope={1}&state={2}&redirect_uri={3}&response_type={4}&" + - "client_id={5}&access_type={6}", AUTH_ENDPOINT, HttpUtility.UrlEncode(Scope), - HttpUtility.UrlEncode(State), HttpUtility.UrlEncode(redirectUrl), - HttpUtility.UrlEncode(RESPONSE_TYPE), HttpUtility.UrlEncode(ClientId), - HttpUtility.UrlEncode(accessType)); - } - - /// - /// Gets the OAuth access and refresh tokens. - /// - /// The authorization code obtained from the - /// Authorization url after the user authorizes the application to make API - /// calls. - /// - /// True if the tokens were fetched successfully, false otherwise. - /// - /// - /// Refresh tokens are obtained only if access mode was set to - /// offline. - /// - /// Thrown if one of the following - /// OAuth2 parameters are empty: ClientId, ClientSecret, AuthorizationCode. - /// - public bool FetchAccessAndRefreshTokens(string authorizationCode) { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - string redirectUrl = (string.IsNullOrEmpty(RedirectUri)) ? OFFLINE_REDIRECT_URL : RedirectUri; - - if (string.IsNullOrEmpty(authorizationCode)) { - throw new ArgumentNullException(CommonErrorMessages.OAuth2AuthorizationCodeIsEmpty); - } - - ValidateOAuth2Parameter("ClientId", ClientId); - ValidateOAuth2Parameter("ClientSecret", ClientSecret); - - string body = string.Format("code={0}&client_id={1}&client_secret={2}&redirect_uri={3}" + - "&grant_type={4}", HttpUtility.UrlEncode(authorizationCode), - HttpUtility.UrlEncode(ClientId), HttpUtility.UrlEncode(ClientSecret), - HttpUtility.UrlEncode(redirectUrl), HttpUtility.UrlEncode("authorization_code")); - - try { - CallTokenEndpoint(body); - } catch (ApplicationException e) { - throw new AdsOAuthException("Failed to get access token." + "\n" + e.Message); - } - return true; - } - - /// - /// Refreshes the access token. - /// - /// This method should be used only when access mode is set to - /// offline. - /// Thrown if one of the following - /// OAuth2 parameters are empty: ClientId, ClientSecret, RefreshToken. - /// - public void RefreshAccessTokenInOfflineMode() { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - ValidateOAuth2Parameter("RefreshToken", RefreshToken); - ValidateOAuth2Parameter("ClientId", ClientId); - ValidateOAuth2Parameter("ClientSecret", ClientSecret); - - string body = string.Format("client_id={0}&client_secret={1}&refresh_token={2}" + - "&grant_type={3}", HttpUtility.UrlEncode(ClientId), HttpUtility.UrlEncode(ClientSecret), - HttpUtility.UrlEncode(RefreshToken), HttpUtility.UrlEncode("refresh_token")); - - try { - CallTokenEndpoint(body); - } catch (ApplicationException e) { - throw new AdsOAuthException("Failed to refresh access token." + "\n" + e.Message); - } - } - - /// - /// Revokes the refresh token. - /// - /// Thrown if one of the following - /// OAuth2 parameters are empty: RefreshToken. - public void RevokeRefreshToken() { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - ValidateOAuth2Parameter("RefreshToken", RefreshToken); - - string url = string.Format("{0}?token={1}", REVOKE_ENDPOINT, RefreshToken); - - WebRequest request = HttpUtilities.BuildRequest(url, "GET", config); - - LogEntry logEntry = new LogEntry(this.Config, new DefaultDateTimeProvider()); - logEntry.LogRequest(new RequestInfo(request, ""), new HashSet()); - - WebResponse response = null; - - try { - response = request.GetResponse(); - - string contents = MediaUtilities.GetStreamContentsAsString(response.GetResponseStream()); - logEntry.LogResponse(new ResponseInfo(response, contents), false); - logEntry.Flush(); - } catch (WebException e) { - string contents = HttpUtilities.GetErrorResponseBody(e); - logEntry.LogResponse(new ResponseInfo(response, contents), true); - logEntry.Flush(); - - throw new AdsOAuthException("Failed to revoke refresh token.\n" + contents, e); - } finally { - if (response != null) { - response.Close(); - } - } - } - - /// - /// Refreshes the access token. - /// - /// Thrown if IsOffline is false. - /// - /// Thrown if RefreshToken is empty. - /// - public override void RefreshAccessToken() { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - ValidateOAuth2Parameter("RefreshToken", RefreshToken); - if (!IsOffline) { - throw new ArgumentException(CommonErrorMessages.OAuth2IsNotInOfflineMode); - } - RefreshAccessTokenInOfflineMode(); - } - - /// - /// Gets the auth header. - /// - /// The auth header. - public override string GetAuthHeader() { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - return base.GetAuthHeader(); - } - - /// - /// Refreshes the access token if expiring. - /// - public override void RefreshAccessTokenIfExpiring() { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - base.RefreshAccessTokenIfExpiring(); - } - } -} diff --git a/dfp/src/Common/Lib/OAuth2ProviderForServiceAccounts.cs b/dfp/src/Common/Lib/OAuth2ProviderForServiceAccounts.cs deleted file mode 100755 index d55451d49a1..00000000000 --- a/dfp/src/Common/Lib/OAuth2ProviderForServiceAccounts.cs +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using System; -using System.Security.Cryptography; -using System.Text; -using System.Web; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// Provides OAuth authorization mechanism for Ads services when using service - /// account flow. - /// - public class OAuth2ProviderForServiceAccounts : OAuth2ProviderBase, - AdsOAuthProviderForServiceAccounts { - - /// - /// The feature ID for this class. - /// - private const AdsFeatureUsageRegistry.Features FEATURE_ID = - AdsFeatureUsageRegistry.Features.OAuthServiceAccountFlow; - - /// - /// Audience for generating JWT string. - /// - private const string JWT_AUDIENCE = "https://accounts.google.com/o/oauth2/token"; - - /// - /// Grant type for generating JWT string. - /// - private const string JWT_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:jwt-bearer"; - - /// - /// Header for generating JWT string. - /// - private const string JWT_HEADER = "{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; - - /// - /// Default expiry period for access token. - /// - private const int DEFAULT_EXPIRY_PERIOD = 3600; - - /// - /// Gets or sets the JWT private key. - /// - public string JwtPrivateKey { - get { - return config.OAuth2PrivateKey; - } - } - - /// - /// Gets or sets the service account email for which access token should be - /// retrieved. - /// - public string ServiceAccountEmail { - get { - return config.OAuth2ServiceAccountEmail; - } - } - - /// - /// Gets or sets the email of the account for which the call is being made. - /// - public string PrnEmail { - get { - return config.OAuth2PrnEmail; - } - set { - config.OAuth2PrnEmail = value; - } - } - - /// - /// Initializes a new instance of the OAuth2ProviderForServiceAccounts class. - /// - /// The config. - public OAuth2ProviderForServiceAccounts(AppConfig config) - : base(config) { - } - - /// - /// Gets the access token for service account. - /// - /// Thrown if one of the following - /// OAuth2 parameters are empty: ServiceAccountEmail, JwtPrivateKey, Scope - /// - public void GenerateAccessTokenForServiceAccount() { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - long timestamp = config.UnixTimestamp; - long expiry = timestamp + DEFAULT_EXPIRY_PERIOD; - - ValidateOAuth2Parameter("ServiceAccountEmail", ServiceAccountEmail); - ValidateOAuth2Parameter("JwtPrivateKey", JwtPrivateKey); - ValidateOAuth2Parameter("Scope", Scope); - - OAuth2JwtClaimset jwtClaimset = new OAuth2JwtClaimsetBuilder() - .WithScope(Scope) - .WithServiceAccountEmail(ServiceAccountEmail) - .WithImpersonationEmail(PrnEmail) - .WithAudience(JWT_AUDIENCE) - .WithTimestamp(timestamp) - .WithExpiry(expiry) - .Build(); - - string encodedHeader = Base64UrlEncode(Encoding.UTF8.GetBytes(JWT_HEADER)); - string encodedClaimset = Base64UrlEncode(Encoding.UTF8.GetBytes(jwtClaimset.ToJson())); - string inputForSignature = encodedHeader + "." + encodedClaimset; - - RSAParameters rsaParameters = ConvertPKCS8ToRsaParameters(JwtPrivateKey); - - string signature = Base64UrlEncode(GetRsaSha256Signature(rsaParameters, - Encoding.UTF8.GetBytes(inputForSignature))); - string jwt = inputForSignature + "." + signature; - - string body = "grant_type=" + HttpUtility.UrlEncode(JWT_GRANT_TYPE) + "&assertion=" + - HttpUtility.UrlEncode(jwt); - - try { - CallTokenEndpoint(body); - } catch (ApplicationException e) { - throw new AdsOAuthException("Failed to get access token for service account." + "\n" + - e.Message); - } - } - - /// - /// Refreshes the access token. - /// - public override void RefreshAccessToken() { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - GenerateAccessTokenForServiceAccount(); - } - } -} diff --git a/dfp/src/Common/Lib/ServiceFactory.cs b/dfp/src/Common/Lib/ServiceFactory.cs deleted file mode 100755 index 3365baa0826..00000000000 --- a/dfp/src/Common/Lib/ServiceFactory.cs +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Text; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Interface to a factory which can create a particular group of services. - /// For every new service supported, you need an implementation of this - /// interface. - /// - public abstract class ServiceFactory : Configurable { - /// - /// An App.config reader suitable for this factory. - /// - private AppConfig config; - - /// - /// Gets an App.config reader suitable for this factory. - /// - public AppConfig Config { - get { - return config; - } - set { - config = value; - config.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) { - ReadHeadersFromConfig(config); - }; - ReadHeadersFromConfig(config); - } - } - - /// - /// Create a service object. - /// - /// Signature of the service being created. - /// The user for which the service is being created. - /// The server to which the API calls should be - /// made. - /// An object of the desired service type. - public abstract AdsClient CreateService(ServiceSignature signature, AdsUser user, - Uri serverUrl); - - /// - /// Reads the headers from App.config. - /// - /// The configuration class. - protected abstract void ReadHeadersFromConfig(AppConfig config); - - /// - /// Checks preconditions of the service signature and throws and exception if the service - /// cannot be generated. - /// - /// the service signature for generating the service - protected abstract void CheckServicePreconditions(ServiceSignature signature); - } -} diff --git a/dfp/src/Common/Lib/ServiceSignature.cs b/dfp/src/Common/Lib/ServiceSignature.cs deleted file mode 100755 index 2c0778c144d..00000000000 --- a/dfp/src/Common/Lib/ServiceSignature.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Text; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Defines an API signature object. This class is used as a support class - /// to assist AdsUser in creating a service object. - /// - public abstract class ServiceSignature { - /// - /// The various protocols supported by the library. - /// - public enum SupportedProtocols { - /// - /// SOAP - /// - SOAP, - - /// - /// WSE - /// - WSE - } - - /// - /// The supported protocol. - /// - SupportedProtocols supportedProtocol; - - /// - /// The service version. - /// - private string version; - - /// - /// The name of the service. - /// - private string serviceName; - - /// - /// A unique id to distinguish the service represented by this signature - /// object. - /// - public virtual string Id { - get { - return version + "." + serviceName; - } - } - - /// - /// Gets the service version. - /// - public string Version { - get { - return version; - } - } - - /// - /// Gets the service name. - /// - public string ServiceName { - get { - return serviceName; - } - } - - /// - /// Gets the supported protocol. - /// - public SupportedProtocols SupportedProtocol { - get { - return supportedProtocol; - } - } - - /// - /// Gets the type of service. - /// - public abstract Type ServiceType { - get; - } - - /// - /// Protected constructor. - /// - /// Service version. - /// Service name. - /// The supported protocol. - protected ServiceSignature(string version, string serviceName, SupportedProtocols protocol) { - this.version = version; - this.serviceName = serviceName; - this.supportedProtocol = protocol; - } - } -} diff --git a/dfp/src/Common/Lib/SoapHeaderBase.cs b/dfp/src/Common/Lib/SoapHeaderBase.cs deleted file mode 100755 index 7e9f0289501..00000000000 --- a/dfp/src/Common/Lib/SoapHeaderBase.cs +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using System; -using System.Collections.Generic; -using System.Web.Services.Protocols; -using System.Xml; -using System.Xml.Schema; -using System.Xml.Serialization; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Common base class for all SOAP Headers. - /// - public abstract class SoapHeaderBase : SoapHeader, ICloneable, IXmlSerializable { - /// - /// The placeholders that need to be replaced in the serialized xml from - /// the stub. - /// - protected Dictionary placeHolders = new Dictionary(); - - /// - /// Gets or sets the stub that is wrapped by this object. - /// - public abstract object Stub { - get; - protected set; - } - - /// - /// Gets the schema for this object. Can return null if the - /// server does not expect the schema. - /// - /// The xml schema associated with this class, or null - /// if not applicable. - public virtual XmlSchema GetSchema() { - return null; - } - - /// - /// Gets the name of the XML element for serializing this object or null if - /// no element name is available. - /// - protected string XmlElementName { - get { - foreach (Attribute attribute in Stub.GetType().GetCustomAttributes(true)) { - if (attribute is XmlRootAttribute) { - return (attribute as XmlRootAttribute).ElementName; - } - } - return null; - } - } - - /// - /// Gets the XML namespace for serializing this object or null if no - /// namespace is available. - /// - protected string XmlNamespace { - get { - foreach (Attribute attribute in Stub.GetType().GetCustomAttributes(true)) { - if (attribute is XmlRootAttribute) { - return (attribute as XmlRootAttribute).Namespace; - } - } - return null; - } - } - - /// - /// Deserialize the object from xml. - /// - /// The xml reader for reading the - /// serialized xml. - public virtual void ReadXml(XmlReader reader) { - XmlDocument doc = XmlUtilities.CreateDocument(reader.ReadOuterXml()); - - XmlNameTable xmlnt = doc.NameTable; - XmlElement root = doc.CreateElement(XmlElementName, XmlNamespace); - - XmlNodeList xmlNodes = doc.DocumentElement.SelectNodes("*"); - foreach (XmlNode node in xmlNodes) { - root.AppendChild(node); - } - doc.RemoveAll(); - doc.AppendChild(root); - - string contents = doc.OuterXml; - - foreach (string key in placeHolders.Keys) { - if (placeHolders[key] != null) { - contents = contents.Replace(placeHolders[key], key); - } - } - Stub = SerializationUtilities.DeserializeFromXmlText(contents, Stub.GetType()); - } - - /// - /// Serialize the object into an xml. - /// - /// The writer to which the serialized data - /// should be written. - public virtual void WriteXml(XmlWriter writer) { - string contents = SerializationUtilities.SerializeAsXmlText(Stub); - - foreach (string key in placeHolders.Keys) { - if (placeHolders[key] != null) { - contents = contents.Replace(key, placeHolders[key]); - } - } - - XmlDocument xDoc = XmlUtilities.CreateDocument(contents); - writer.WriteRaw(xDoc.DocumentElement.InnerXml); - } - - /// - /// Clone this object. - /// - /// - /// A cloned object. - /// - public object Clone() { - SoapHeaderBase header = (SoapHeaderBase) Activator.CreateInstance(this.GetType()); - header.Stub = SerializationUtilities.DeserializeFromXmlText( - SerializationUtilities.SerializeAsXmlText(this.Stub), this.Stub.GetType()); - return header; - } - } -} diff --git a/dfp/src/Common/Logging/AdsFeatureUsageRegistry.cs b/dfp/src/Common/Logging/AdsFeatureUsageRegistry.cs deleted file mode 100755 index cd5fae8e563..00000000000 --- a/dfp/src/Common/Logging/AdsFeatureUsageRegistry.cs +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2016, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System.Collections.Generic; -using System.Linq; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// A utility class for tracking the usage of various features in the client - /// library. - /// - public class AdsFeatureUsageRegistry { - - /// - /// The key name to use when storing the feature usage registry in - /// ContextStore. - /// - private const string FEATURE_USAGE_REGISTRY_KEY = "AdsFeatureUsageRegistry"; - - /// - /// The list of features we need to track. - /// - public enum Features { - - /// - /// Default value. - /// - Unknown, - - /// - /// Group of features used to build selectors in AdWords library. This - /// includes extension methods in Paging, OrderBy and Predicate classes. - /// - SelectorBuilder, - - /// - /// The selector field enums generated by stub code generator. - /// - SelectorField, - - /// - /// All classes derived from AdsReportUtilities. - /// - ReportDownloader, - - /// - /// ProductPartitionTree and associated classes in AdWords API. - /// - ProductPartitionTree, - - /// - /// BatchJobUtilities and associated classes in AdWords API. - /// - BatchJobHelper, - - /// - /// StatementBuilder class in DFP API. - /// - StatementBuilder, - - /// - /// Classes that provide OAuth service account flow in AdWords and DFP API. - /// - OAuthServiceAccountFlow, - - /// - /// Classes that provide OAuth installed application and web account flows - /// in AdWords and DFP API. - /// - OAuthApplicationFlow, - - /// - /// Classes that provide logging functionality. - /// - Logging, - }; - - /// - /// Dictionary to keep track of feature usage. - /// - private Dictionary featureUsageMap = new Dictionary(); - - /// - /// Prevents a default instance of the class from being - /// created. - /// - private AdsFeatureUsageRegistry() { - } - - /// - /// Gets the feature usage tracker instance. - /// - public static AdsFeatureUsageRegistry Instance { - get { - lock (FEATURE_USAGE_REGISTRY_KEY) { - AdsFeatureUsageRegistry adsFeatureUsageRegistry = - (AdsFeatureUsageRegistry) ContextStore.GetValue(FEATURE_USAGE_REGISTRY_KEY); - - if (adsFeatureUsageRegistry != null) { - return adsFeatureUsageRegistry; - } - adsFeatureUsageRegistry = new AdsFeatureUsageRegistry(); - ContextStore.AddKey(FEATURE_USAGE_REGISTRY_KEY, adsFeatureUsageRegistry); - return adsFeatureUsageRegistry; - } - } - } - - /// - /// Marks the usage of a feature. - /// - /// Name of the feature. - /// If the feature is - /// unregistered. - public void MarkUsage(Features featureName) { - lock (featureUsageMap) { - featureUsageMap[featureName] = true; - } - } - - /// - /// Clears the feature usage registry records. - /// - public void Clear() { - lock (featureUsageMap) { - featureUsageMap.Clear(); - } - } - - /// - /// Gets a comma separated list of features that have been used. - /// - public string Text { - get { - lock (featureUsageMap) { - return string.Join(", ", featureUsageMap.Keys - .Where(key => featureUsageMap[key] == true) - .Select(item => item.ToString()) - .OrderBy(item => item)); - } - } - } - } -} diff --git a/dfp/src/Common/Logging/DefaultBodyFormatter.cs b/dfp/src/Common/Logging/DefaultBodyFormatter.cs deleted file mode 100755 index cc1b3909d18..00000000000 --- a/dfp/src/Common/Logging/DefaultBodyFormatter.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Collections.Generic; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Default instance of TraceFormatter. This class doesn't do any formatting - /// transformation. - /// - public class DefaultBodyFormatter : TraceFormatter { - - /// - /// Initializes a new instance of the - /// class. - /// - public DefaultBodyFormatter() : base() { - } - - /// - /// Masks the contents of the traced message. - /// - /// The message body. - /// The keys for which values should be masked - /// in the message body. - /// - /// The formatted message body. - /// - public override string MaskContents(string body, ISet keysToMask) { - return body; - } - } -} diff --git a/dfp/src/Common/Logging/JsonBodyFormatter.cs b/dfp/src/Common/Logging/JsonBodyFormatter.cs deleted file mode 100755 index 5f2c1e0717e..00000000000 --- a/dfp/src/Common/Logging/JsonBodyFormatter.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Web.Script.Serialization; - - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Formats a JSON trace message by masking out sensitive fields. - /// - public class JsonBodyFormatter : TraceFormatter { - - /// - /// Masks the contents of the traced message. - /// - /// The message body. - /// The keys for which values should be masked - /// in the message body. - /// - /// The formatted message body. - /// - public override string MaskContents(string body, ISet keysToMask) { - JavaScriptSerializer serializer = new JavaScriptSerializer(); - Dictionary jsonDict = null; - - try { - jsonDict = serializer.Deserialize>(body); - } catch { - // This block could be hit if - // - ArgumentException is thrown. This happens if the body being passed - // here is not a JSON text. - // - ArgumentNullException if body is null. - // In both cases, it makes sense to return body unaltered. - return body; - } - - if (jsonDict != null) { - foreach (string key in keysToMask) { - if (jsonDict.ContainsKey(key)) { - jsonDict[key] = MASK_PATTERN; - } - } - return serializer.Serialize(jsonDict); - } else { - return body; - } - } - } -} \ No newline at end of file diff --git a/dfp/src/Common/Logging/KeyValueMessageFormatter.cs b/dfp/src/Common/Logging/KeyValueMessageFormatter.cs deleted file mode 100755 index 34288342cc1..00000000000 --- a/dfp/src/Common/Logging/KeyValueMessageFormatter.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Web.Script.Serialization; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Formats a Key-value collection message by masking out sensitive fields. - /// - public class KeyValueMessageFormatter : TraceFormatter { - - /// - /// Masks the contents of the traced message. - /// - /// The message body. - /// The keys for which values should be masked - /// in the message body. - /// - /// The formatted message body. - /// - public override string MaskContents(string body, ISet keysToMask) { - string[] splits = body.Split(new char[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries); - for (int i = 0; i < splits.Length; i++) { - string split = splits[i]; - int delim = split.IndexOf('='); - if (delim != -1) { - string key = split.Substring(0, delim); - if (keysToMask.Contains(key)) { - split = string.Format("{0}={1}", key, MASK_PATTERN); - } - } - splits[i] = split; - } - return string.Join("\r\n", splits); - } - } -} \ No newline at end of file diff --git a/dfp/src/Common/Logging/LogEntry.cs b/dfp/src/Common/Logging/LogEntry.cs deleted file mode 100755 index 49af39b5501..00000000000 --- a/dfp/src/Common/Logging/LogEntry.cs +++ /dev/null @@ -1,364 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Util; - -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Globalization; -using System.Net; -using System.Text; -using System.Web; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Helper class for logging. - /// - public class LogEntry { - - /// - /// The application configuration. - /// - private AppConfig config; - - /// - /// The date and time provider. - /// - private DateTimeProvider dateTimeProvider; - - /// - /// The flag to indicate whether this request is a failure or not. - /// - private bool isFailure; - - /// - /// Gets or sets the summary request log. - /// - public string SummaryRequestLog { - get; - private set; - } - - /// - /// Gets or sets the summary response log. - /// - public string SummaryResponseLog { - get; - private set; - } - - /// - /// Gets or sets the detailed request log. - /// - public string DetailedRequestLog { - get; - private set; - } - - /// - /// Gets or sets the detailed response log. - /// - public string DetailedResponseLog { - get; - private set; - } - - /// - /// Gets the detailed log. - /// - public string DetailedLog { - get { - return this.DetailedRequestLog + this.DetailedResponseLog; - } - } - - /// - /// Gets the summary log. - /// - public string SummaryLog { - get { - return this.SummaryRequestLog + "," + this.SummaryResponseLog; - } - } - - /// - /// Initializes a new instance of the class. - /// - /// The application configuration. - /// The date and time provider. - public LogEntry(AppConfig config, DateTimeProvider dateTimeProvider) { - this.config = config; - this.dateTimeProvider = dateTimeProvider; - } - - /// - /// Logs an HTTP request. - /// - /// The request information. - /// The headers to mask. - public void LogRequest(RequestInfo requestInfo, ISet headersToMask) { - LogRequest(requestInfo, headersToMask, - GetTraceFormatterForHTTPRequests(config.MaskCredentials)); - } - - /// - /// Logs an HTTP request. - /// - /// The request information. - /// The headers to mask. - /// The to use when - /// formatting the message. - /// The request logs - public void LogRequest(RequestInfo requestInfo, ISet headersToMask, - TraceFormatter formatter) { - LogRequestSummary(requestInfo, headersToMask, formatter); - LogRequestDetails(requestInfo, headersToMask, formatter); - } - - /// - /// Logs the details of an HTTP request. - /// - /// The request information. - /// The headers to mask. - /// The to use when - /// formatting the message. - public void LogRequestDetails(RequestInfo requestInfo, ISet headersToMask, - TraceFormatter formatter) { - this.DetailedRequestLog = GetFormattedRequestLog(requestInfo, - headersToMask, formatter); - } - - /// - /// Logs the summary of an HTTP request. - /// - /// The request information. - /// The formatted request summary. - public void LogRequestSummary(RequestInfo requestInfo, string requestSummary) { - this.SummaryRequestLog = string.Format(CultureInfo.InvariantCulture, - "host={0},url={1},{2}", requestInfo.Uri.Host, requestInfo.Uri.AbsolutePath, - requestSummary); - } - - /// - /// Logs the summary of an HTTP request. - /// - /// The request information. - /// The headers to mask. - /// The to use when - /// formatting the message. - public void LogRequestSummary(RequestInfo requestInfo, ISet headersToMask, - TraceFormatter formatter) { - LogRequestSummary(requestInfo, - GetRequestSummary(requestInfo.Headers, requestInfo.Body, headersToMask, formatter)); - } - - /// - /// Logs an HTTP response. - /// - /// The response information. - /// True, if this is a failed response, false - /// otherwise. - public void LogResponse(ResponseInfo responseInfo, bool isFailure) { - LogResponse(responseInfo, isFailure, new HashSet(), - new DefaultBodyFormatter()); - } - - /// - /// Logs an HTTP response. - /// - /// The response information. - /// True, if this is a failed response, false - /// otherwise. - /// The list of fields to mask. - /// The formatter to be used for formatting the - /// response logs. - public void LogResponse(ResponseInfo responseInfo, bool isFailure, - ISet fieldsToMask, TraceFormatter formatter) { - LogResponseSummary(isFailure, ""); - LogResponseDetails(responseInfo, fieldsToMask, formatter); - } - - /// - /// Logs the summary of an HTTP response.. - /// - /// True, if this is a failed response, false - /// otherwise. - /// Any additional details to be appended to the - /// response logs. - public void LogResponseSummary(bool isFailure, string formattedMessage) { - this.isFailure = isFailure; - this.SummaryResponseLog = string.Format("Result={0},{1}", isFailure ? "Failure" : "Success", - formattedMessage).TrimEnd(','); - } - - /// - /// Logs the details of an HTTP response. - /// - /// The response information. - /// The list of fields to mask. - /// The formatter to be used for formatting the - /// response logs. - public void LogResponseDetails(ResponseInfo responseInfo, ISet fieldsToMask, - TraceFormatter formatter) { - if (config.MaskCredentials) { - this.DetailedResponseLog = GetFormattedResponseLog(responseInfo, fieldsToMask, formatter); - } else { - this.DetailedResponseLog = GetFormattedResponseLog(responseInfo); - } - } - - /// - /// Writes the HTTP logs. - /// - public void Flush() { - TraceUtilities.WriteDetailedRequestLogs(this.DetailedLog, isFailure); - TraceUtilities.WriteSummaryRequestLogs(this.SummaryLog, isFailure); - } - - /// - /// Gets the formatted logs for an HTTP request. - /// - /// The request information. - /// The headers to mask. - /// The trace formatter to use when formatting - /// the message. - /// - private string GetFormattedRequestLog(RequestInfo requestInfo, ISet headersToMask, - TraceFormatter traceFormatter) { - StringBuilder builder = new StringBuilder(); - builder.AppendFormat("\r\n-----------------BEGIN API CALL---------------------\r\n"); - builder.AppendFormat("\r\nRequest\r\n"); - builder.AppendFormat("-------\r\n\r\n"); - - StringBuilder headerBuilder = new StringBuilder(); - - headerBuilder.AppendFormat("{0} {1}\r\n", requestInfo.Method, requestInfo.Uri.AbsolutePath); - headerBuilder.AppendFormat("{0}", GetFormattedHttpHeaderLogs(MaskHeaders( - requestInfo.Headers, headersToMask), "\r\n")); - builder.AppendFormat("{0}\r\n\r\n{1}\r\n", headerBuilder.ToString(), - traceFormatter.MaskContents(requestInfo.Body, headersToMask)); - return builder.ToString(); - } - - /// - /// Gets the formatted logs for an HTTP response. - /// - /// The response information. - /// The response log text. - private string GetFormattedResponseLog(ResponseInfo responseInfo) { - return GetFormattedResponseLog(responseInfo, new HashSet(), - new DefaultBodyFormatter()); - } - - /// - /// Gets the formatted logs for an HTTP response. - /// - /// The response information. - /// The headers to mask. - /// The trace formatter to use when formatting - /// the message. - /// The response log text. - private string GetFormattedResponseLog(ResponseInfo responseInfo, ISet headersToMask, - TraceFormatter traceFormatter) { - StringBuilder builder = new StringBuilder(); - builder.AppendFormat("\r\nResponse\r\n"); - builder.AppendFormat("--------\r\n"); - - builder.AppendFormat("\r\n{0}\r\n\r\n{1}\r\n", - GetFormattedHttpHeaderLogs(MaskHeaders(responseInfo.Headers, headersToMask), "\r\n"), - traceFormatter.MaskContents(responseInfo.Body, headersToMask)); - - builder.AppendFormat("-----------------END API CALL-----------------------\r\n"); - return builder.ToString(); - } - - /// - /// Gets the formatted logs for HTTP request or response headers. - /// - /// The HTTP headers. - /// The separator string. - /// The log output. - private string GetFormattedHttpHeaderLogs(Dictionary headers, string seps) { - StringBuilder headerBuilder = new StringBuilder(); - foreach (string key in headers.Keys) { - headerBuilder.AppendFormat("{0}: {1}{2}", key, headers[key], seps); - } - headerBuilder.AppendFormat("TimeStamp: {0}{1}", this.GetTimeStamp(), seps); - return headerBuilder.ToString(); - } - - /// - /// Masks the headers. - /// - /// The list of all headers - /// The list of headers to mask. - /// The list of headers, after masking. - private Dictionary MaskHeaders(WebHeaderCollection headers, - ISet headersToMask) { - Dictionary maskedHeaders = new Dictionary(); - foreach (string key in headers) { - if (config.MaskCredentials && headersToMask.Contains(key)) { - maskedHeaders[key] = TraceFormatter.MASK_PATTERN; - } else { - maskedHeaders[key] = headers[key]; - } - } - return maskedHeaders; - } - - /// - /// Gets the trace formatter for formatting an HTTP request. - /// - /// True, if fields should be masked, false - /// otherwise. - /// A trace formatter for formatting HTTP request. - private TraceFormatter GetTraceFormatterForHTTPRequests(bool shouldMask) { - TraceFormatter formatter = null; - if (shouldMask) { - formatter = new UrlEncodedBodyFormatter(); - } else { - formatter = new DefaultBodyFormatter(); - } - return formatter; - } - - /// - /// Gets the request summary for logging. - /// - /// The HTTP request headers. - /// The HTTP request body. - /// The set of headers to mask - /// The formatter to use for masking - /// The request summary for logging. - private string GetRequestSummary(WebHeaderCollection headers, string body, - ISet headersToMask, TraceFormatter formatter) { - Dictionary maskedHeader = MaskHeaders(headers, headersToMask); - NameValueCollection collection = HttpUtility.ParseQueryString(body); - string loggedHeaders = GetFormattedHttpHeaderLogs(maskedHeader, ", "); - string details = formatter.MaskContents(body, headersToMask); - - return loggedHeaders + details; - } - - /// - /// Gets the current timestamp as a formatted string. - /// - /// The current timestamp. - private string GetTimeStamp() { - return dateTimeProvider.Now.ToString("R"); - } - } -} diff --git a/dfp/src/Common/Logging/RequestInfo.cs b/dfp/src/Common/Logging/RequestInfo.cs deleted file mode 100755 index 1eda3ae2936..00000000000 --- a/dfp/src/Common/Logging/RequestInfo.cs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Net; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Stores the details of an HTTP request being logged. - /// - public class RequestInfo { - /// - /// The request URI. - /// - private Uri uri; - - /// - /// The HTTP request method. - /// - private string method; - - /// - /// The HTTP request headers. - /// - private WebHeaderCollection headers; - - /// - /// The HTTP request body. - /// - private string body; - - /// - /// Initializes a new instance of the class. - /// - public RequestInfo() { - } - - /// - /// Initializes a new instance of the class. - /// - /// The HTTP request being logged. - /// The HTTP request body. - public RequestInfo(WebRequest request, string body) { - this.Uri = request.RequestUri; - this.Method = request.Method; - this.Headers = request.Headers; - this.body = body; - } - - /// - /// Gets or sets the request URI. - /// - public Uri Uri { - get { - return uri; - } - set { - uri = value; - } - } - - /// - /// Gets or sets the HTTP method. - /// - public string Method { - get { - return method; - } - set { - method = value; - } - } - - /// - /// Gets or sets the HTTP request headers. - /// - public WebHeaderCollection Headers { - get { - return headers; - } - set { - headers = value; - } - } - - /// - /// Gets or sets HTTP request body. - /// - public string Body { - get { - return body; - } - set { - body = value; - } - } - } -} diff --git a/dfp/src/Common/Logging/ResponseInfo.cs b/dfp/src/Common/Logging/ResponseInfo.cs deleted file mode 100755 index f23aba21011..00000000000 --- a/dfp/src/Common/Logging/ResponseInfo.cs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Net; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Stores the details of an HTTP response being logged. - /// - public class ResponseInfo { - /// - /// The HTTP response headers. - /// - private WebHeaderCollection headers; - - /// - /// The HTTP response body. - /// - private string body; - - /// - /// Initializes a new instance of the class. - /// - public ResponseInfo() { - } - - /// - /// Initializes a new instance of the class. - /// - /// The HTTP response. - /// The HTTP response body. - public ResponseInfo(WebResponse response, string body) { - this.Headers = response != null ? response.Headers : new WebHeaderCollection(); - this.Body = body; - } - - /// - /// Gets or sets the HTTP response headers. - /// - public WebHeaderCollection Headers { - get { - return headers; - } - set { - headers = value; - } - } - - /// - /// Gets or sets the HTTP response body. - /// - public string Body { - get { - return body; - } - set { - body = value; - } - } - } -} diff --git a/dfp/src/Common/Logging/SoapListener.cs b/dfp/src/Common/Logging/SoapListener.cs deleted file mode 100755 index 39ed50ea1f2..00000000000 --- a/dfp/src/Common/Logging/SoapListener.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using System.Xml; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Listens to SOAP messages sent and received by this library. - /// - public interface SoapListener : Configurable { - - /// - /// Initializes the listener for handling an API call. - /// - void InitForCall(); - - /// - /// Handles the SOAP message. - /// - /// The SOAP message. - /// The SOAP service. - /// The direction of message. - void HandleMessage(XmlDocument soapMessage, AdsClient service, SoapMessageDirection direction); - - /// - /// Cleans up any resources after an API call. - /// - void CleanupAfterCall(); - } -} diff --git a/dfp/src/Common/Logging/SoapListenerExtension.cs b/dfp/src/Common/Logging/SoapListenerExtension.cs deleted file mode 100755 index 8f4bc9c25f3..00000000000 --- a/dfp/src/Common/Logging/SoapListenerExtension.cs +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using System; -using System.IO; -using System.Runtime.CompilerServices; -using System.Text; -using System.Web.Services.Protocols; -using System.Xml; - -namespace Google.Api.Ads.Common.Lib { - - /// - /// Define a SOAP Extension that traces the SOAP request and SOAP response - /// for the XML Web service method the SOAP extension is applied to. - /// - public class SoapListenerExtension : SoapExtension { - - /// - /// The old stream, which we replaced in . - /// - private Stream oldStream; - - /// - /// The new stream, which we substituted for, in . - /// - private MemoryStream newStream; - - /// - /// Initializes a new instance of the - /// class. - /// - public SoapListenerExtension() { - } - - /// - /// Save the Stream representing the SOAP request or SOAP response into - /// a local memory buffer. - /// - /// The original stream - /// The new stream. - public override Stream ChainStream(Stream stream) { - oldStream = stream; - newStream = new MemoryStream(); - return newStream; - } - - /// - /// When the SOAP extension is accessed for the first time, the XML Web - /// service method it is applied to is accessed to store the file - /// name passed in, using the corresponding SoapExtensionAttribute. - /// - /// The method being called. - /// Decorating attribute for the method. - /// An initializer object. - /// Thrown if - /// is null. - public override object GetInitializer(LogicalMethodInfo methodInfo, - SoapExtensionAttribute attribute) { - if (methodInfo == null) { - throw new ArgumentNullException("methodInfo"); - } - return methodInfo.DeclaringType; - } - - /// - /// The SOAP extension was configured to run using a configuration file - /// instead of an attribute applied to a specific XML Web service - /// method. - /// - /// The type of the webservice being - /// used. - /// An initializer object. - public override object GetInitializer(Type serviceType) { - return serviceType; - } - - /// - /// Process the messages passing in and out of the SOAP services. - /// - /// The current SOAP message. - /// Thrown if - /// is null. - [MethodImpl(MethodImplOptions.Synchronized)] - public override void ProcessMessage(SoapMessage message) { - if (message == null) { - throw new ArgumentNullException("message"); - } - switch (message.Stage) { - case SoapMessageStage.BeforeSerialize: - break; - - case SoapMessageStage.AfterSerialize: - CallListeners(SoapMessageDirection.OUT); - CopyContentsToOldStream(); - break; - - case SoapMessageStage.BeforeDeserialize: - CopyContentsFromOldStream(); - CallListeners(SoapMessageDirection.IN); - break; - - case SoapMessageStage.AfterDeserialize: - break; - - default: - throw new ArgumentException(CommonErrorMessages.InvalidStageForSoapMessage); - } - } - - /// - /// Calls the listeners. - /// - /// The direction of SOAP message. - private void CallListeners(SoapMessageDirection direction) { - XmlDocument document = XmlUtilities.CreateDocument(Encoding.UTF8.GetString( - newStream.ToArray())); - - AdsClient service = (AdsClient) ContextStore.GetValue("SoapService"); - if (service != null) { - service.User.CallListeners(document, service, direction); - } - byte[] bytes = Encoding.UTF8.GetBytes(document.OuterXml); - newStream.SetLength(0); - newStream.Write(bytes, 0, bytes.Length); - newStream.Seek(0, SeekOrigin.Begin); - } - - /// - /// Copy the contents from new stream to old stream. - /// - private void CopyContentsToOldStream() { - newStream.Position = 0; - MediaUtilities.CopyStream(newStream, oldStream); - } - - /// - /// Copy the contents from old stream to new stream. - /// - private void CopyContentsFromOldStream() { - MediaUtilities.CopyStream(oldStream, newStream); - newStream.Position = 0; - } - - /// - /// When overridden in a derived class, allows a SOAP extension to - /// initialize itself using the data cached in the GetInitializer method. - /// - /// The object returned from GetInitializer - /// - public override void Initialize(object initializer) { - } - } -} diff --git a/dfp/src/Common/Logging/SoapListenerExtensionAttribute.cs b/dfp/src/Common/Logging/SoapListenerExtensionAttribute.cs deleted file mode 100755 index 1cc17142aed..00000000000 --- a/dfp/src/Common/Logging/SoapListenerExtensionAttribute.cs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Web.Services.Protocols; - -namespace Google.Api.Ads.Common.Lib { - /// - /// SoapExtensionAttribute for the SOAP Extension that can be - /// applied to an XML Web service method to enable tracing. - /// - [AttributeUsage(AttributeTargets.Method)] - public sealed class SoapListenerExtensionAttribute : SoapExtensionAttribute { - /// - /// Stores the priority for this trace attribute. - /// - private int priority; - - /// - /// Return the type of Extension. - /// - public override Type ExtensionType { - get { - return typeof(SoapListenerExtension); - } - } - - /// - /// Return the priority of this attribute. - /// - public override int Priority { - get { - return priority; - } - set { - priority = value; - } - } - } -} diff --git a/dfp/src/Common/Logging/SoapMessageDirection.cs b/dfp/src/Common/Logging/SoapMessageDirection.cs deleted file mode 100755 index bc13170fbb5..00000000000 --- a/dfp/src/Common/Logging/SoapMessageDirection.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; - -namespace Google.Api.Ads.Common.Lib { - /// - /// Direction of SOAP message. - /// - public enum SoapMessageDirection { - /// - /// Response from the server. - /// - IN, - /// - /// Request to the server. - /// - OUT - } -} diff --git a/dfp/src/Common/Logging/SoapTraceFormatter.cs b/dfp/src/Common/Logging/SoapTraceFormatter.cs deleted file mode 100755 index 4d2716b6783..00000000000 --- a/dfp/src/Common/Logging/SoapTraceFormatter.cs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using System.Collections.Generic; -using System.Xml; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Formats a SOAP message. - /// - public class SoapTraceFormatter : TraceFormatter { - - /// - /// Masks the contents of the traced message. - /// - /// The message body. - /// The keys for which values should be masked - /// in the message body. - /// - /// The formatted message body. - /// - public override string MaskContents(string body, ISet keysToMask) { - if(keysToMask.Count == 0) { - return body; - } - - XmlDocument xDoc = XmlUtilities.CreateDocument(body); - XmlNamespaceManager xmlns = new XmlNamespaceManager(xDoc.NameTable); - xmlns.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/"); - - foreach (string key in keysToMask) { - string xPath = string.Format("soap:Envelope/descendant::*[local-name()='{0}']", key); - XmlNodeList nodes = xDoc.SelectNodes(xPath, xmlns); - foreach (XmlElement node in nodes) { - node.InnerText = MASK_PATTERN; - } - } - - return xDoc.OuterXml; - } - } -} diff --git a/dfp/src/Common/Logging/TraceFormatter.cs b/dfp/src/Common/Logging/TraceFormatter.cs deleted file mode 100755 index 55d14e3134f..00000000000 --- a/dfp/src/Common/Logging/TraceFormatter.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Collections.Generic; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Formats a Trace message. - /// - public abstract class TraceFormatter { - - /// - /// The mask pattern to be used when masking sensitive data in logs. - /// - public const string MASK_PATTERN = "REDACTED"; - - /// - /// Masks the contents of the traced message. - /// - /// The message body. - /// The keys for which values should be masked - /// in the message body. - /// The formatted message body. - public abstract string MaskContents(string body, ISet keysToMask); - } -} \ No newline at end of file diff --git a/dfp/src/Common/Logging/TraceListener.cs b/dfp/src/Common/Logging/TraceListener.cs deleted file mode 100755 index 8c338778e88..00000000000 --- a/dfp/src/Common/Logging/TraceListener.cs +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Util; - -using System.Collections.Generic; -using System.Globalization; -using System.Net; -using System.Xml; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Listens to SOAP messages sent and received by this library. - /// - public abstract class TraceListener : SoapListener { - - /// - /// The config class to be used with this class. - /// - private AppConfig config; - - /// - /// The date and time provider. - /// - private DateTimeProvider dateTimeProvider; - - /// - /// Gets or sets the date and time provider. - /// - public DateTimeProvider DateTimeProvider { - get { - return dateTimeProvider; - } - set { - dateTimeProvider = value; - } - } - - /// - /// Gets the config class to be used with this class. - /// - public AppConfig Config { - get { - return config; - } - } - - /// - /// Protected constructor. - /// - /// The config class. - protected TraceListener(AppConfig config) { - this.config = config; - this.dateTimeProvider = new DefaultDateTimeProvider(); - } - - /// - /// Initializes the listener for handling an API call. - /// - public void InitForCall() { - } - - /// - /// Handles the SOAP message. - /// - /// The SOAP message. - /// The SOAP service. - /// The direction of message. - public void HandleMessage(XmlDocument soapMessage, AdsClient service, - SoapMessageDirection direction) { - if (direction == SoapMessageDirection.OUT) { - ContextStore.AddKey("SoapRequest", soapMessage.OuterXml); - } else { - ContextStore.AddKey("SoapResponse", soapMessage.OuterXml); - } - if (direction == SoapMessageDirection.IN) { - PerformLogging(service, (string) ContextStore.GetValue("SoapRequest"), - (string) ContextStore.GetValue("SoapResponse")); - } - } - - /// - /// Cleans up any resources after an API call. - /// - public void CleanupAfterCall() { - ContextStore.RemoveKey("SoapRequest"); - ContextStore.RemoveKey("SoapResponse"); - ContextStore.RemoveKey("FormattedSoapLog"); - ContextStore.RemoveKey("FormattedRequestLog"); - } - - /// - /// Performs the SOAP and HTTP logging. - /// - /// The SOAP service. - /// The SOAP response xml. - /// The SOAP request xml. - private void PerformLogging(AdsClient service, string soapRequest, string soapResponse) { - if (service == null || service.User == null || soapRequest == null || soapResponse == null) { - return; - } - - bool isFailure = service.LastResponse != null && service.LastResponse is HttpWebResponse && - (service.LastResponse as HttpWebResponse).StatusCode == - HttpStatusCode.InternalServerError; - - LogEntry logEntry = new LogEntry(config, dateTimeProvider); - RequestInfo requestInfo = new RequestInfo(service.LastRequest, soapRequest); - logEntry.LogRequestDetails(requestInfo, GetFieldsToMask(), new SoapTraceFormatter()); - logEntry.LogResponseDetails(new ResponseInfo(service.LastResponse, soapResponse), - new HashSet(), new DefaultBodyFormatter()); - logEntry.LogRequestSummary(requestInfo, GetSummaryRequestLogs(soapRequest)); - logEntry.LogResponseSummary(isFailure, GetSummaryResponseLogs(soapResponse)); - logEntry.Flush(); - - ContextStore.AddKey("FormattedSoapLog", logEntry.DetailedLog); - ContextStore.AddKey("FormattedRequestLog", logEntry.SummaryLog); - } - - /// - /// Gets a list of fields to be masked in xml logs. - /// - /// The list of fields to be masked. - protected abstract ISet GetFieldsToMask(); - - /// - /// Gets the summary request logs. - /// - /// The request xml for this SOAP call. - /// The summary request logs. - protected virtual string GetSummaryRequestLogs(string soapRequest) { - return ""; - } - - /// - /// Gets the summary response logs. - /// - /// The response xml for this SOAP call. - /// The summary response logs. - protected virtual string GetSummaryResponseLogs(string soapResponse) { - return ""; - } - } -} diff --git a/dfp/src/Common/Logging/UrlEncodedBodyFormatter.cs b/dfp/src/Common/Logging/UrlEncodedBodyFormatter.cs deleted file mode 100755 index 03677b2fae8..00000000000 --- a/dfp/src/Common/Logging/UrlEncodedBodyFormatter.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Web; - -namespace Google.Api.Ads.Common.Logging { - - /// - /// Formats a URL encoded HTTP trace message by masking out sensitive fields. - /// - public class UrlEncodedBodyFormatter : TraceFormatter { - - /// - /// Masks the contents of the traced message. - /// - /// The message body. - /// The keys for which values should be masked - /// in the message body. - /// - /// The formatted message body. - /// - public override string MaskContents(string body, ISet keysToMask) { - NameValueCollection collection = HttpUtility.ParseQueryString(body); - - foreach (string key in keysToMask) { - if (keysToMask.Contains(key)) { - collection[key] = MASK_PATTERN; - } - } - - List encodedParams = new List(); - foreach (string key in collection.Keys) { - encodedParams.Add(string.Format("{0}={1}", HttpUtility.UrlEncode(key), - HttpUtility.UrlEncode(collection[key]))); - } - return string.Join("&", encodedParams.ToArray()); - } - } -} diff --git a/dfp/src/Common/Properties/AssemblyInfo.cs b/dfp/src/Common/Properties/AssemblyInfo.cs deleted file mode 100755 index e9ca6f3de8e..00000000000 --- a/dfp/src/Common/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Ads API Dotnet Common Library")] -[assembly: AssemblyDescription( - "This library provides you with common functionality to access Ads API.")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("664c76a0-82f8-489b-a74f-8595f289713b")] diff --git a/dfp/src/Common/Properties/Properties.cs b/dfp/src/Common/Properties/Properties.cs deleted file mode 100755 index 64e801353c4..00000000000 --- a/dfp/src/Common/Properties/Properties.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Reflection; - -[assembly: AssemblyCompany("Google")] -[assembly: AssemblyProduct("Ads API Dotnet Common Library")] -[assembly: AssemblyCopyright("Copyright 2012, Google Inc. All Rights Reserved.")] -[assembly: AssemblyVersion("7.1.0.0")] -[assembly: AssemblyFileVersion("7.1.0.0")] diff --git a/dfp/src/Common/Util/CollectionUtilities.cs b/dfp/src/Common/Util/CollectionUtilities.cs deleted file mode 100755 index dc535bff8c1..00000000000 --- a/dfp/src/Common/Util/CollectionUtilities.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2016, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Collections.Generic; - -namespace Google.Api.Ads.Common.Util { - - /// - /// Provides utility methods for working with collections. - /// - public static class CollectionUtilities { - - /// - /// Attempts to retrieve a value associated with the specified key from the specified - /// Dictionary. - /// The dictionary to query. - /// The key to retrieve a value for. - /// - /// The value associated with the spcified key, or the default value for that type if none - /// could be found. - public static T TryGetValue(Dictionary dictionary, S key) { - return TryGetValue(dictionary, key, default(T)); - } - - /// - /// Attempts to retrieve a value associated with the specified key from the specified - /// Dictionary. - /// The dictionary to query. - /// The key to retrieve a value for. - /// The value to return if none could be found. - /// - /// The value associated with the spcified key, or defaultValue if none could be found. - /// - public static T TryGetValue(Dictionary dictionary, S key, T defaultValue) { - T value; - return dictionary.TryGetValue(key, out value) ? value : defaultValue; - } - } -} diff --git a/dfp/src/Common/Util/CsvException.cs b/dfp/src/Common/Util/CsvException.cs deleted file mode 100755 index 1acec109ade..00000000000 --- a/dfp/src/Common/Util/CsvException.cs +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; -using System.IO; -using System.Text; -using System.Runtime.Serialization; -using System.Security.Permissions; -using System.Xml.Serialization; - -namespace Google.Api.Ads.Common.Util { - /// - /// Custom exception class for handling csv errors. - /// - [Serializable] - public class CsvException : AdsException { - /// - /// Public constructor. - /// - public CsvException() : base() { - } - - /// - /// Public constructor. - /// - /// Error message for this API exception. - public CsvException(string message) : base(message) { - } - - /// - /// Public constructor. - /// - /// Error message for this API exception. - /// Inner exception, if any. - public CsvException(string message, Exception innerException) - : base(message, innerException) { - } - - /// - /// Protected constructor. Used by serialization frameworks while - /// deserializing an exception object. - /// - /// Info about the serialization context. - /// A streaming context that represents the - /// serialization stream. - protected CsvException(SerializationInfo info, StreamingContext context) : base(info, context) { - } - } -} diff --git a/dfp/src/Common/Util/CsvFile.cs b/dfp/src/Common/Util/CsvFile.cs deleted file mode 100755 index 1627fef4fe5..00000000000 --- a/dfp/src/Common/Util/CsvFile.cs +++ /dev/null @@ -1,255 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Text; - -namespace Google.Api.Ads.Common.Util { - /// - /// Wraps the functionalities to read and write from a CSV file. - /// - public class CsvFile { - /// - /// Headers in the csv file. - /// - private List headers; - - /// - /// Records in the csv file. - /// - private List records; - - /// - /// List of CSV file headers. - /// - public List Headers { - get { - return headers; - } - } - - /// - /// List of records in the CSV file. - /// - public List Records { - get { - return records; - } - } - - /// - /// Public constructor. - /// - public CsvFile() { - headers = new List(); - records = new List(); - } - - /// - /// Reads the contents of the CSV file into memory. - /// - /// Full path to the csv file. - /// True, if the first line of the csv file - /// is a header. - public void Read(string fileName, bool hasHeaders) { - Load(fileName, hasHeaders); - } - - /// - /// Reads the contents of the CSV string into memory. - /// - /// Text to be parsed as csv file contents. - /// True, if the first line of the csv file - /// contents is a header. - public void ReadFromString(string contents, bool hasHeaders) { - Parse(contents, hasHeaders); - } - - /// - /// Writes the contents of the CsvFile object into a file. - /// - /// The full path of the file to which - /// the contents are to be written. - /// The file will have headers only if - /// are set for this object. - public void Write(string fileName) { - using (StreamWriter writer = new StreamWriter(fileName)) { - if (Headers.Count != 0) { - StringBuilder builder = ConvertRowToCsvString(Headers.ToArray()); - writer.WriteLine(builder.ToString().TrimEnd(',')); - } - foreach (string[] row in Records) { - StringBuilder builder = ConvertRowToCsvString(row); - writer.WriteLine(builder.ToString().TrimEnd(',')); - } - } - } - - /// - /// Converts a csv row item collection into a csv string. - /// - /// An array of string items which represents - /// one row in CSV file. - /// A StringBuilder object representing the stringized row. - /// You can call a ToString() to get the stringized representation - /// for this row. - private static StringBuilder ConvertRowToCsvString(string[] rowItems) { - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < rowItems.Length; i++) { - string temp = rowItems[i]; - temp = temp.Replace("\"", "\"\""); - if (temp.Contains(",") || temp.Contains("\"")) { - temp = string.Format(CultureInfo.InvariantCulture, "\"{0}\"", temp); - } - builder.Append(temp + ","); - } - return builder; - } - - /// - /// Parses a csv file and loads it into memory. - /// - /// Full path to the csv file. - /// True, if the first line of the csv file - /// is a header. - private void Load(string filePath, bool hasHeaders) { - using (StreamReader reader = new StreamReader(filePath)) { - string contents = reader.ReadToEnd(); - Parse(contents, hasHeaders); - } - } - - /// - /// Parses a csv file's contents and loads it into memory. - /// - /// File contents that should be parsed into memory. - /// - /// True, if the first line of the csv file is - /// a header. - private void Parse(string contents, bool hasHeaders) { - string[] lines = contents.Split(new char[] {'\n', '\r'}, - StringSplitOptions.RemoveEmptyEntries); - - if (lines.Length == 0) { - return; - } - int startIndex = 0; - - if (hasHeaders) { - headers = new List(SplitCsvLine(lines[0], StringSplitOptions.None)); - startIndex = 1; - } else { - headers = null; - } - records = new List(); - for (int i = startIndex; i < lines.Length; i++) { - string[] splits = SplitCsvLine(lines[i], StringSplitOptions.None); - records.Add(splits); - } - } - - /// - /// Splits a csv line into its components. - /// - /// The comma separated line to be split into - /// components. - /// The string splitting options. - /// The items, broken down as an array of strings. - /// Thrown if - /// is null. - /// Thrown if the csv string is malformed. - /// - private static string[] SplitCsvLine(string text, StringSplitOptions options) { - if (text == null) { - throw new ArgumentNullException("text"); - } - int start = 0; - List retVal = new List(); - bool quotes = false; - for (int i = 0; i < text.Length; i++) { - switch (text[i]) { - case '"': - quotes = !quotes; - break; - - case ',': - if (!quotes) { - retVal.AddRange(ExtractAndAddItem(text, start, i, options)); - start = i + 1; - } - break; - } - } - retVal.AddRange(ExtractAndAddItem(text, start, text.Length, options)); - // Quotes opened, not closed. - if (quotes) { - throw new CsvException(CommonErrorMessages.QuotesNotClosedInCsvLine); - } - return retVal.ToArray(); - } - - /// - /// Extracts one token identified by SplitCsvLine. - /// - /// The original comma separated line. - /// Start index for the item just identified. - /// - /// Stop index for the item just identified. - /// The string split options to be used while - /// extracting the token. - /// Thrown if - /// is null or empty. - /// Thrown if 0 < - /// <= <= - /// .Length is not met. - private static string[] ExtractAndAddItem(string text, int startIndex, int endIndex, - StringSplitOptions options) { - List retVal = new List(); - - if (string.IsNullOrEmpty(text)) { - throw new ArgumentNullException("text"); - } - - if (startIndex < 0 || startIndex > text.Length) { - throw new ArgumentOutOfRangeException("startIndex", - CommonErrorMessages.StringIndexOutOfBounds); - } - if (endIndex > text.Length) { - throw new ArgumentOutOfRangeException("endIndex", - CommonErrorMessages.StringIndexOutOfBounds); - } - - if (endIndex < startIndex) { - throw new ArgumentOutOfRangeException( - CommonErrorMessages.StartIndexShouldBeLessThanEndIndex); - } - - string item = String.Empty; - - item = text.Substring(startIndex, endIndex - startIndex); - item = item.Replace("\"\"", "\""); - if (item.Length >= 2 && item[0] == '"' && item[item.Length - 1] == '"') { - item = item.Substring(1, item.Length - 2); - } - if (options == StringSplitOptions.None || (options == StringSplitOptions.RemoveEmptyEntries - && !string.IsNullOrEmpty(item))) { - retVal.Add(item); - } - return retVal.ToArray(); - } - } -} diff --git a/dfp/src/Common/Util/DateTimeProvider.cs b/dfp/src/Common/Util/DateTimeProvider.cs deleted file mode 100755 index 29819f96016..00000000000 --- a/dfp/src/Common/Util/DateTimeProvider.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; - -namespace Google.Api.Ads.Common.Util { - - /// - /// Provides the current date and time, without depending directly on - /// System.DateTime. This makes testing code that depends on timestamps - /// easier. - /// - public interface DateTimeProvider { - - /// - /// Gets the current time. - /// - /// - /// The current time. - /// - DateTime Now { get; } - } -} \ No newline at end of file diff --git a/dfp/src/Common/Util/DefaultDateTimeProvider.cs b/dfp/src/Common/Util/DefaultDateTimeProvider.cs deleted file mode 100755 index 1a8e8bb5af3..00000000000 --- a/dfp/src/Common/Util/DefaultDateTimeProvider.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; - -namespace Google.Api.Ads.Common.Util { - - /// - /// Default implementation of DateTimeProvider. - /// - public class DefaultDateTimeProvider : DateTimeProvider { - - /// - /// Gets the current time. - /// - /// - /// The current time. - /// - public DateTime Now { - get { - return DateTime.Now; - } - } - } -} \ No newline at end of file diff --git a/dfp/src/Common/Util/DeprecationUtilities.cs b/dfp/src/Common/Util/DeprecationUtilities.cs deleted file mode 100755 index 3bdf3711a77..00000000000 --- a/dfp/src/Common/Util/DeprecationUtilities.cs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Reflection; - -namespace Google.Api.Ads.Common.Util { - /// - /// Utility class to display deprecation message at runtime. - /// - public class DeprecationUtilities { - /// - /// Writes a deprecation message to Trace stream. - /// - /// Details of the deprecated member. - /// The member corresponding to memberInfo should be annotated with - /// an ObsoleteAttribute. - public static void ShowDeprecationMessage(MemberInfo memberInfo) { - if (memberInfo == null) { - throw new NullReferenceException("MemberInfo cannot be null."); - } - TraceUtilities.WriteDeprecationWarnings(GetDeprecationMessage(memberInfo)); - } - - /// - /// Gets the deprecation message to be displayed. - /// - /// Details of the deprecated member. - /// The deprecation message as found on the ObsoleteAttribute - /// decoration for this member, or null otherwise. - private static string GetDeprecationMessage(MemberInfo memberInfo) { - object[] attributes = memberInfo.GetCustomAttributes(typeof(ObsoleteAttribute), false); - - if (attributes.Length > 0) { - return ((ObsoleteAttribute) attributes[0]).Message; - } - return null; - } - } -} diff --git a/dfp/src/Common/Util/HttpUtilities.cs b/dfp/src/Common/Util/HttpUtilities.cs deleted file mode 100755 index 2107b537bb0..00000000000 --- a/dfp/src/Common/Util/HttpUtilities.cs +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright 2015, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Logging; - -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; - -namespace Google.Api.Ads.Common.Util { - - /// - /// Utility class for various HTTP tasks. - /// - public class HttpUtilities { - - /// - /// Builds an HTTP PUT request with a Range header. - /// - /// The URL. - /// Length of the content. - /// The range heaer notation. - /// The web request for making HTTP call. - private static WebRequest BuildRangeRequest(string url, int contentLength, string range) { - return BuildRangeRequest(url, contentLength, range, new AppConfigBase()); - } - - /// - /// Builds an HTTP PUT request with a Range header. - /// - /// The URL. - /// Length of the content. - /// The range heaer notation. - /// The configuration instance for customizing the - /// connection settings. - /// The web request for making HTTP call. - /// Thrown if - /// is null. - public static WebRequest BuildRangeRequest(string url, int contentLength, string range, - AppConfig config) { - if (config == null) { - throw new ArgumentNullException("config"); - } - - WebRequest request = BuildRequest(url, "PUT", config); - - request.ContentLength = contentLength; - request.Headers["Content-Range"] = range; - - return request; - } - - /// - /// Builds an HTTP request with a specified method. - /// - /// The URL. - /// The HTTP method. - /// The web request for making HTTP call. - private static WebRequest BuildRequest(string url, string method) { - return BuildRequest(url, method, new AppConfigBase()); - } - - /// - /// Builds an HTTP request with a specified method. - /// - /// The URL. - /// The HTTP method. - /// The configuration instance for customizing the - /// connection settings. - /// The web request for making HTTP call. - /// Thrown if - /// is null. - public static WebRequest BuildRequest(string url, string method, AppConfig config) { - if (config == null) { - throw new ArgumentNullException("config"); - } - - WebRequest request = HttpWebRequest.Create(url); - - request.Method = method; - request.Proxy = config.Proxy; - request.Timeout = config.Timeout; - - HttpWebRequest httpRequest = request as HttpWebRequest; - if (httpRequest != null) { - httpRequest.UserAgent = config.GetUserAgent(); - - if (config.EnableGzipCompression){ - httpRequest.AutomaticDecompression = DecompressionMethods.GZip - | DecompressionMethods.Deflate; - } else { - httpRequest.AutomaticDecompression = DecompressionMethods.None; - } - - return httpRequest; - } - - return request; - } - - /// - /// Gets the error response body. - /// - /// The web exception. - /// - public static string GetErrorResponseBody(WebException e) { - WebResponse response = e.Response; - string contents = e.Message; - try { - if (response != null) { - contents = MediaUtilities.GetStreamContentsAsString( - response.GetResponseStream()); - } - } catch { - // Nothing much to do here, since this is an exception on top of an - // exception (e.g. IOException on top of a WebException that was a - // timeout), and it is enough to return the original WebException. - } - return contents; - } - - /// - /// Attempts to write a post body and log the request. - /// - /// The request. - /// The post body. - /// The log entry. - /// The headers to mask. - public static void WritePostBodyAndLog(WebRequest request, string postBody, - LogEntry logEntry, ISet headersToMask) { - try { - using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { - writer.Write(postBody); - } - } finally { - logEntry.LogRequest(new RequestInfo(request, postBody), headersToMask); - } - } - } -} diff --git a/dfp/src/Common/Util/MediaUtilities.cs b/dfp/src/Common/Util/MediaUtilities.cs deleted file mode 100755 index 765286e36ac..00000000000 --- a/dfp/src/Common/Util/MediaUtilities.cs +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Net; - -namespace Google.Api.Ads.Common.Util { - - /// - /// Provides utility methods for handling media resources. - /// - public static class MediaUtilities { - - /// - /// Retrieves an asset from the web given its url. - /// - /// The url of the asset to be retrieved. - /// The application configuration instance. - /// Asset data, as an array of bytes. - /// Thrown if - /// or is null. - /// - public static byte[] GetAssetDataFromUrl(Uri assetUrl, AppConfig config) { - if (assetUrl == null) { - throw new ArgumentNullException("assetUrl"); - } - - if (config == null) { - throw new ArgumentNullException("config"); - } - - WebRequest request = HttpUtilities.BuildRequest(assetUrl.AbsoluteUri, "GET", config); - WebResponse response = request.GetResponse(); - - MemoryStream memStream = new MemoryStream(); - using (Stream responseStream = response.GetResponseStream()) { - CopyStream(responseStream, memStream); - } - return memStream.ToArray(); - } - - /// - /// Retrieves an asset from the web given its url. - /// - /// The url of the asset to be retrieved. - /// Asset data, as an array of bytes. - /// Thrown if - /// is null. - public static byte[] GetAssetDataFromUrl(Uri assetUrl) { - return GetAssetDataFromUrl(assetUrl, new AppConfigBase()); - } - - /// - /// Retrieves an asset from the web given its url. - /// - /// The url of the asset to be retrieved. - /// Asset data, as an array of bytes. - /// Thrown if - /// is null. - public static byte[] GetAssetDataFromUrl(string assetUrl) { - if (string.IsNullOrEmpty(assetUrl)) { - throw new ArgumentNullException("assetUrl"); - } - return GetAssetDataFromUrl(new Uri(assetUrl)); - } - - /// - /// Retrieves an asset from the web given its url. - /// - /// The url of the asset to be retrieved. - /// The application configuration instance. - /// Asset data, as an array of bytes. - /// Thrown if - /// or is null. - /// - public static byte[] GetAssetDataFromUrl(string assetUrl, AppConfig config) { - if (string.IsNullOrEmpty(assetUrl)) { - throw new ArgumentNullException("assetUrl"); - } - - if (config == null) { - throw new ArgumentNullException("config"); - } - - return GetAssetDataFromUrl(new Uri(assetUrl), config); - } - - /// - /// Deflates data compressed in gzip format. - /// - /// Data to be deflated. - /// Deflated data. - /// Thrown if - /// is null. - public static byte[] DeflateGZipData(byte[] gzipData) { - if (gzipData == null) { - throw new ArgumentNullException("gzipData"); - } - MemoryStream memStream = new MemoryStream(); - using (GZipStream gzipStream = new GZipStream(new MemoryStream(gzipData), - CompressionMode.Decompress)) { - CopyStream(gzipStream, memStream); - } - return memStream.ToArray(); - } - - /// - /// Copies a stream from source to destination and returns the first n - /// bytes as preview. - /// - /// Source stream. - /// Destination stream. - /// The maximum number of preview bytes to - /// return. - /// An array of bytes, whose max size is maxPreviewBytes. - /// Thrown if source stream is not - /// readable, or if the target stream is not writable. - /// - /// - /// Thrown if or - /// is null. - public static byte[] CopyStreamWithPreview(Stream sourceStream, Stream targetStream, - int maxPreviewBytes) { - if (sourceStream == null) { - throw new ArgumentNullException("sourceStream"); - } - - if (targetStream == null) { - throw new ArgumentNullException("targetStream"); - } - - if (!sourceStream.CanRead) { - throw new System.ArgumentException(CommonErrorMessages.SourceStreamIsNotReadable); - } - - if (!targetStream.CanWrite) { - throw new System.ArgumentException(CommonErrorMessages.TargetStreamIsNotWritable); - } - - int bufferSize = 2 << 20; - byte[] buffer = new byte[bufferSize]; - List byteArray = new List(); - - int bytesRead = 0; - while ((bytesRead = sourceStream.Read(buffer, 0, bufferSize)) != 0) { - int index = 0; - while (byteArray.Count < maxPreviewBytes && index < bytesRead) { - byteArray.Add(buffer[index]); - index++; - } - targetStream.Write(buffer, 0, bytesRead); - } - return byteArray.ToArray(); - } - - /// - /// Copies a stream from source to destination. - /// - /// Source stream. - /// Destination stream. - /// Thrown if source stream is not - /// readable, or if the target stream is not writable. - /// - /// - /// Thrown if or - /// is null. - public static void CopyStream(Stream sourceStream, Stream targetStream) { - CopyStreamWithPreview(sourceStream, targetStream, 0); - } - - /// - /// Gets the stream contents as string. - /// - /// The stream. - /// Contents of the stream, as a string. - public static string GetStreamContentsAsString(Stream stream) { - string contents = ""; - using (StreamReader reader = new StreamReader(stream)) { - contents = reader.ReadToEnd(); - } - return contents; - } - } -} diff --git a/dfp/src/Common/Util/PreconditionUtilities.cs b/dfp/src/Common/Util/PreconditionUtilities.cs deleted file mode 100755 index afd966ff602..00000000000 --- a/dfp/src/Common/Util/PreconditionUtilities.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2015, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Text; - -namespace Google.Api.Ads.Common.Util { - - /// - /// Provides utility methods for checking preconditions. - /// - public class PreconditionUtilities { - - /// - /// Utility method for null checking arguments. - /// - /// The Object to check - /// The name of the argument being checked - public static void CheckArgumentNotNull(object value, string argument) { - if (value == null) { - throw new ArgumentNullException(argument); - } - } - - /// - /// Utility method for null checking arguments. - /// - /// The Object to check - /// The name of the argument being checked - public static void CheckArgument(bool condition, string message) { - if (!condition) { - throw new ArgumentException(message); - } - } - - /// - /// Utility method for checking values. - /// - /// The Object to check - /// The error message if the Object is null - public static void CheckNotNull(object value, string message) { - if (value == null) { - throw new NullReferenceException(message); - } - } - - /// - /// Utility method for checking the state of a class or method. - /// - /// The condition to check. - /// The error message to use if the condition check - /// fails. - public static void CheckState(bool condition, string message) { - if (!condition) { - throw new InvalidOperationException(message); - } - } - } -} diff --git a/dfp/src/Common/Util/Reports/AdsReportUtilities.cs b/dfp/src/Common/Util/Reports/AdsReportUtilities.cs deleted file mode 100755 index d91ecea6888..00000000000 --- a/dfp/src/Common/Util/Reports/AdsReportUtilities.cs +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System.Threading; - -namespace Google.Api.Ads.Common.Util.Reports { - - /// - /// The base class for all Ads API report download utilities. - /// - public abstract class AdsReportUtilities { - - /// - /// The duration in milliseconds to wait between each poll to see if a - /// report is ready to be downloaded. - /// - private const int WAIT_PERIOD = 30 * 1000; - - /// - /// Delegate to be triggered when the report is ready to download. - /// - /// The report response. - public delegate void OnReadyCallback(ReportResponse response); - - /// - /// Delegate to be triggered when the report download failed. - /// - /// The report download exception. - public delegate void OnFailedCallback(AdsReportsException exception); - - /// - /// The user associated with this object. - /// - private AdsUser user; - - /// - /// The thread to use when downloading the report in an asynchronous manner. - /// - private Thread asyncThread; - - /// - /// The callback that will be triggered when the report is ready to be - /// downloaded. - /// - private OnReadyCallback onReady; - - /// - /// The callback that will be triggered when the report download fails. - /// - private OnFailedCallback onFailed; - - /// - /// Initializes a new instance of the - /// class. - /// - /// AdWords user to be used along with this - /// utilities object. - public AdsReportUtilities(AdsUser user) { - this.user = user; - } - - /// - /// Returns a flag indicating whether the caller should wait more time for - /// the report download to complete. - /// - /// True, if the caller should wait more, false otherwise. - /// - protected virtual bool ShouldWaitMore() { - return false; - } - - /// - /// Schedules a report for download. - /// - protected virtual void Schedule() { - } - - /// - /// Gets the report response. - /// - /// The report response. - protected abstract ReportResponse GetReport(); - - /// - /// Returns the user associated with this object. - /// - public AdsUser User { - get { - return user; - } - } - - /// - /// Gets or sets the callback that will be triggered when the report is - /// ready to be downloaded. - /// - public OnReadyCallback OnReady { - get { - return onReady; - } - set { - onReady = value; - } - } - - /// - /// Gets or sets the callback that will be triggered when the report - /// download fails. - /// - public OnFailedCallback OnFailed { - get { - return onFailed; - } - set { - onFailed = value; - } - } - - /// - /// Gets the report download response asynchronously. - /// - public virtual void GetResponseAsync() { - asyncThread = new Thread(new ThreadStart(delegate() { - try { - ReportResponse response = GetResponse(); - if (onReady != null) { - onReady(response); - } - } catch (AdsReportsException e) { - if (onFailed != null) { - onFailed(e); - } else { - throw; - } - } - })); - asyncThread.Start(); - } - - /// - /// Gets the report download response. - /// - /// The report response. - public virtual ReportResponse GetResponse() { - Schedule(); - while (ShouldWaitMore()) { - Thread.Sleep(WAIT_PERIOD); - } - return GetReport(); - } - } -} diff --git a/dfp/src/Common/Util/Reports/ReportResponse.cs b/dfp/src/Common/Util/Reports/ReportResponse.cs deleted file mode 100755 index 3df3ab13d5e..00000000000 --- a/dfp/src/Common/Util/Reports/ReportResponse.cs +++ /dev/null @@ -1,260 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.IO; -using System.IO.Compression; -using System.Net; -using System.Text; -using System.Threading; - -namespace Google.Api.Ads.Common.Util.Reports { - - /// - /// Represents a report response from the server. - /// - public class ReportResponse : IDisposable { - - /// - /// The report contents in memory. - /// - private byte[] contents; - - /// - /// The underlying HTTP web response. - /// - private WebResponse response; - - /// - /// Flag to keep track if this report response has been disposed. - /// - private bool disposed = false; - - /// - /// Delegate to be triggered when asynchronous report download is completed - /// successfully. - /// - public delegate void OnDownloadSuccessCallback(byte[] contents); - - /// - /// Delegate to be triggered when asynchronous report save is completed - /// successfully. - /// - public delegate void OnSaveSuccessCallback(); - - /// - /// Delegate to be triggered when asynchronous report download fails. - /// - public delegate void OnFailedCallback(AdsReportsException exception); - - /// - /// Initializes a new instance of the class. - /// - /// The underlying HTTP web response. - public ReportResponse(WebResponse response) { - if (response == null) { - throw new ArgumentNullException("Response cannot be null."); - } - this.response = response; - } - - /// - /// The callback that will be triggered when the asynchronous report - /// download is completed successfully. - /// - public OnDownloadSuccessCallback OnDownloadSuccess { get; set; } - - /// - /// The callback that will be triggered when the asynchronous report - /// save is completed successfully. - /// - public OnSaveSuccessCallback OnSaveSuccess { get; set; } - - /// - /// Gets the callback that will be triggered when the asynchronous report - /// download fails. - /// - public OnFailedCallback OnFailed { get; set; } - - /// - /// Gets the report contents as a stream. - /// - public Stream Stream { - get { - this.EnsureStreamIsOpen(); - return response.GetResponseStream(); - } - } - - /// - /// Gets the report contents as a decompressed stream. - /// - public Stream DecompressedStream { - get { - return new GZipStream(this.Stream, CompressionMode.Decompress); - } - } - - /// - /// Gets the path to the downloaded report. - /// - public string Path { get; private set; } - - /// - /// Saves the report to a specified path and closes the underlying stream. - /// - /// The path to which report is saved. - /// If there was an error saving the report. - public void Save(string path) { - this.EnsureStreamIsOpen(); - - try { - using (FileStream fileStream = File.OpenWrite(path)) { - fileStream.SetLength(0); - MediaUtilities.CopyStream(this.Stream, fileStream); - this.CloseWebResponse(); - } - this.Path = path; - } catch (Exception e) { - throw new AdsReportsException("Failed to save report. See inner exception " + - "for more details.", e); - } - } - - /// - /// Saves the report to a specified path asynchronously and closes the underlying stream. - /// callback will be triggered when the download completes - /// successfully, and callback will be triggered when the download - /// fails. - /// - /// The path to which report is saved. - /// If there was an error saving the report. - public void SaveAsync(string path) { - Thread asyncThread = new Thread(new ThreadStart(delegate() { - try { - Save(path); - if (this.OnSaveSuccess != null) { - this.OnSaveSuccess(); - } - } catch (AdsReportsException e) { - if (this.OnFailed != null) { - this.OnFailed(e); - } else { - throw; - } - } - })); - asyncThread.Start(); - } - - /// - /// Downloads the report to memory and closes the underlying stream. - /// - /// If there was an error downloading the report. - /// - public byte[] Download() { - this.EnsureStreamIsOpen(); - - try { - MemoryStream memStream = new MemoryStream(); - MediaUtilities.CopyStream(this.Stream, memStream); - this.contents = memStream.ToArray(); - this.CloseWebResponse(); - } catch (Exception e) { - throw new AdsReportsException("Failed to download report. See inner exception " + - "for more details.", e); - } - - return this.contents; - } - - /// - /// Downloads the report to memory asynchronously and closes the underlying stream. - /// callback will be triggered when the download completes - /// successfully, and callback will be triggered when the download - /// fails. - /// - /// If there was an error downloading the report. - /// - public void DownloadAsync() { - Thread asyncThread = new Thread(new ThreadStart(delegate() { - try { - byte[] contents = Download(); - if (this.OnDownloadSuccess != null) { - this.OnDownloadSuccess(contents); - } - } catch (AdsReportsException e) { - if (this.OnFailed != null) { - this.OnFailed(e); - } else { - throw; - } - } - })); - asyncThread.Start(); - } - - /// - /// Checks to ensure that the underlying stream has not been closed. - /// - /// If the underlying stream has been closed. - /// - private void EnsureStreamIsOpen() { - if (response == null) { - throw new AdsReportsException("Cannot access a closed report response stream."); - } - } - - /// - /// Performs application-defined tasks associated with freeing, releasing, - /// or resetting unmanaged resources. - /// - public void Dispose() { - this.Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Releases unmanaged and - optionally - managed resources. - /// - /// true to release both managed and - /// unmanaged resources; false to release only unmanaged resources. - /// - protected virtual void Dispose(bool disposing) { - if (!this.disposed) { - if (disposing) { - this.CloseWebResponse(); - } - disposed = true; - } - } - - /// - /// Closes the underlying HTTP web response. - /// - private void CloseWebResponse() { - if (response != null) { - response.Close(); - response = null; - } - } - - /// - /// Finalizes an instance of the class. - /// - ~ReportResponse() { - this.Dispose(false); - } - } -} diff --git a/dfp/src/Common/Util/Reports/ReportsException.cs b/dfp/src/Common/Util/Reports/ReportsException.cs deleted file mode 100755 index 0de480476c3..00000000000 --- a/dfp/src/Common/Util/Reports/ReportsException.cs +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; -using System.Runtime.Serialization; -using System.Security.Permissions; - -namespace Google.Api.Ads.Common.Util.Reports { - - /// - /// Custom exception class for handling reporting errors. - /// - [Serializable] - public class AdsReportsException : AdsException { - - /// - /// Public constructor. - /// - public AdsReportsException() - : base() { - } - - /// - /// Public constructor. - /// - /// Error message for this API exception. - public AdsReportsException(string message) - : base(message) { - } - - /// - /// Public constructor. - /// - /// Error message for this API exception. - /// Inner exception, if any. - public AdsReportsException(string message, Exception innerException) - : base(message, innerException) { - } - - /// - /// Protected constructor. Used by serialization frameworks while - /// deserializing an exception object. - /// - /// Info about the serialization context. - /// A streaming context that represents the - /// serialization stream. - protected AdsReportsException(SerializationInfo info, StreamingContext context) - : base(info, context) { - } - - /// - /// This method is called by serialization frameworks while serializing - /// an exception object. - /// - /// Info about the serialization context. - /// A streaming context that represents the - /// serialization stream. - [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)] - public override void GetObjectData(SerializationInfo info, StreamingContext context) { - base.GetObjectData(info, context); - } - } -} \ No newline at end of file diff --git a/dfp/src/Common/Util/SerializationUtilities.cs b/dfp/src/Common/Util/SerializationUtilities.cs deleted file mode 100755 index 92486d5214a..00000000000 --- a/dfp/src/Common/Util/SerializationUtilities.cs +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Runtime.CompilerServices; -using System.Xml.Serialization; -using System.Text; -using System.Xml; - -namespace Google.Api.Ads.Common.Util { - /// - /// This class provides utility methods in serializing and deserializing an - /// object as xml. - /// - public class SerializationUtilities { - /// - /// A map to store custom xml serializers. - /// - /// For background, see - /// http://support.microsoft.com/kb/886385/en-us. The summary of the issue - /// is that .NET runtime will leak XmlSerializer objects if the non-custom - /// constructor (custom rootNode, namespace, etc.) is requested, and hence - /// the serializers need to be cached locally. To replicate memory leaks, - /// write AdWords API code that will throw a lot of SOAPExceptions. The - /// XmlSerializers obtained for deserializing the SOAP exceptions will be - /// leaked by the runtime. - /// - private static Dictionary customSerializerMaps = - new Dictionary(); - - /// - /// Deserialize an object from xml for a custom root node and xml namespace. - /// - /// The serialized xml. - /// The type of deserialized object. - /// The xml namespace of the object in serialized xml. - /// - /// The root node name for the object in serialized - /// xml. - /// The deserialized object or null if deserialization fails. - /// - /// must be XmlSerializable. - /// - public static object DeserializeFromXmlTextCustomRootNs(string contents, Type contentType, - string ns, string rootNode) { - if (string.IsNullOrEmpty(contents) || contentType == null || string.IsNullOrEmpty(ns) || - string.IsNullOrEmpty(rootNode)) { - return null; - } - XmlSerializer serializer = GetCustomXmlSerializer(contentType, ns, rootNode); - return DeserializeFromXmlText(serializer, contents); - } - - /// - /// Gets a custom serializer for a type from a cache. - /// - /// The type of deserialized object. - /// The xml namespace of the object in serialized xml. - /// - /// The root node name for the object in serialized - /// xml. - /// The xml serializer. - /// See http://support.microsoft.com/kb/886385/en-us and - /// http://code.google.com/p/google-api-adwords-dotnet/issues/detail?id=78 - /// for more details. - [MethodImpl(MethodImplOptions.Synchronized)] - private static XmlSerializer GetCustomXmlSerializer(Type contentType, string ns, - string rootNode) { - string key = string.Format("{0}_{1}_{2}", contentType.AssemblyQualifiedName, ns, rootNode); - - XmlSerializer serializer = CollectionUtilities.TryGetValue(customSerializerMaps, key); - if (serializer == null) { - serializer = new XmlSerializer(contentType, new XmlAttributeOverrides(), - new Type[] { }, new XmlRootAttribute(rootNode), ns); - customSerializerMaps.Add(key, serializer); - } - - return serializer; - } - - /// - /// Deserialize an object from xml. - /// - /// The serialized xml. - /// The type of deserialized object. - /// The deserialized object. - /// must be XmlSerializable. - /// - public static object DeserializeFromXmlText(string contents, Type contentType) { - if (string.IsNullOrEmpty(contents) || contentType == null) { - return null; - } - - return DeserializeFromXmlText(new XmlSerializer(contentType), contents); - } - - /// - /// Deserialize an object from xml. - /// - /// The serialized xml. - /// The serializer to be used for deserializing - /// the objects. - /// The deserialized object. - /// must be XmlSerializable. - /// - private static object DeserializeFromXmlText(XmlSerializer serializer, string contents) { - object retval = null; - - using (MemoryStream memStream = new MemoryStream()) { - byte[] bytes = Encoding.UTF8.GetBytes(contents); - memStream.Write(bytes, 0, bytes.Length); - memStream.Seek(0, SeekOrigin.Begin); - retval = serializer.Deserialize(memStream); - } - return retval; - } - - /// - /// Serializes an object as xml. - /// - /// The object to serialize. - /// The serialized xml string. - /// must be XmlSerializable. - /// - public static string SerializeAsXmlText(object objToSerialize) { - string retval = ""; - - using (StringWriter writer = new Utf8StringWriter()) { - new XmlSerializer(objToSerialize.GetType()).Serialize(writer, objToSerialize); - retval = writer.ToString(); - } - return retval; - } - - /// - /// Clones an object. - /// - /// The object to clone. - /// The cloned object. - /// must be Serializable. - /// - public static object CloneObject(object objToClone) { - string serializedObject = SerializeAsXmlText(objToClone); - return DeserializeFromXmlText(serializedObject, objToClone.GetType()); - } - - /// - /// Used for serializing string into UTF-8 xml, instead of default Unicode. - /// (utf-16). - /// - class Utf8StringWriter : StringWriter { - /// - /// Gets the in which the output is - /// written. - /// - /// - /// The Encoding in which the output is written. - /// - public override Encoding Encoding { - get { - return new UTF8Encoding(false); - } - } - } - } -} diff --git a/dfp/src/Common/Util/TemporaryIdGenerator.cs b/dfp/src/Common/Util/TemporaryIdGenerator.cs deleted file mode 100755 index bfc5ec5de46..00000000000 --- a/dfp/src/Common/Util/TemporaryIdGenerator.cs +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2015, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Google.Api.Ads.Common.Util { - - /// - /// Generates a sequence of temporary negative IDs. - /// - public class TemporaryIdGenerator { - /// - /// The number generation sequence. - /// - private IEnumerator sequence; - - /// - /// Initializes a new instance of the class. - /// - public TemporaryIdGenerator() - : this(Int32.MinValue) { - } - - /// - /// Initializes a new instance of the class. - /// - /// The ID to start generating the sequence from. - /// If startId is a positive value. - /// The IDs are generated in the increasing order from the - /// . - public TemporaryIdGenerator(int startId) { - if (startId >= 0) { - throw new ArgumentException("ID cannot be positive."); - } - int count = -1 - startId; - sequence = Enumerable.Range(startId, count).GetEnumerator(); - } - - /// - /// Returns the next ID in the list. - /// - /// - public long Next { - get { - if (sequence.MoveNext()) { - return sequence.Current; - } else { - throw new ApplicationException("No more IDs to generate."); - } - } - } - - /// - /// Gets the sequence of numbers. - /// - public IEnumerator Sequence { - get { - return sequence; - } - } - } -} \ No newline at end of file diff --git a/dfp/src/Common/Util/TraceUtilities.cs b/dfp/src/Common/Util/TraceUtilities.cs deleted file mode 100755 index f0ddeec884d..00000000000 --- a/dfp/src/Common/Util/TraceUtilities.cs +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#define TRACE - -using Google.Api.Ads.Common.Logging; - -using System; -using System.Collections.Generic; -using System.Diagnostics; - -namespace Google.Api.Ads.Common.Util { - - /// - /// Provides utility methods to write to Trace stream. - /// - public class TraceUtilities { - - /// - /// The registry for saving feature usage information.. - /// - private static readonly AdsFeatureUsageRegistry featureUsageRegistry = - AdsFeatureUsageRegistry.Instance; - - /// - /// The feature ID for this class. - /// - private const AdsFeatureUsageRegistry.Features FEATURE_ID = - AdsFeatureUsageRegistry.Features.Logging; - - /// - /// Trace source for deprecation messages. - /// - public const string DEPRECATION_MESSAGES_SOURCE = "AdsClientLibs.DeprecationMessages"; - - /// - /// Trace source for general warning messages. - /// - public const string GENERAL_WARNING_MESSAGES_SOURCE = "AdsClientLibs.GeneralWarningMessages"; - - /// - /// Trace source for detailed HTTP request logs. - /// - public const string DETAILED_REQUEST_LOGS_SOURCE = "AdsClientLibs.DetailedRequestLogs"; - - /// - /// Trace source for summarized HTTP request logs. - /// - public const string SUMMARY_REQUEST_LOGS_SOURCE = "AdsClientLibs.SummaryRequestLogs"; - - /// - /// The list of known Trace sources. - /// - private static readonly Dictionary KNOWN_TRACE_SOURCES = - new Dictionary() { - {DEPRECATION_MESSAGES_SOURCE, new TraceSource(DEPRECATION_MESSAGES_SOURCE)}, - {GENERAL_WARNING_MESSAGES_SOURCE, new TraceSource(GENERAL_WARNING_MESSAGES_SOURCE)}, - {SUMMARY_REQUEST_LOGS_SOURCE, new TraceSource(SUMMARY_REQUEST_LOGS_SOURCE)}, - {DETAILED_REQUEST_LOGS_SOURCE, new TraceSource(DETAILED_REQUEST_LOGS_SOURCE)} - }; - - /// - /// Initializes the class. - /// - static TraceUtilities() {} - - /// - /// The Trace message id. - /// - /// Trace.Write needs a TRACE id to categorize messages, but since - /// we don't provide any categorization, we will use a standard value. - /// - private const int ADS_API_TRACE_ID = 1; - - /// - /// Gets a Trace source by name. - /// - /// Name of the Trace source. - /// The trace source. - /// Thrown if the trace source is - /// unknown. - public static TraceSource GetSource(string sourceName) { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - TraceSource source = CollectionUtilities.TryGetValue(KNOWN_TRACE_SOURCES, sourceName); - if(source == null) { - throw new ArgumentException(string.Format(CommonErrorMessages.UnknownTraceSource, - sourceName)); - } - - return source; - } - - /// - /// Writes the deprecation warnings. - /// - /// The message. - /// The trace levels may be controlled from App.config by setting - /// the level for AdsClientLibs.DeprecationMessages trace switch. - public static void WriteDeprecationWarnings(string message) { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - Write(DEPRECATION_MESSAGES_SOURCE, TraceEventType.Warning, message); - } - - /// - /// Writes the general warnings. - /// - /// The message. - /// The trace levels may be controlled from App.config by setting - /// the level for AdsClientLibs.GeneralWarningMessages trace switch. - public static void WriteGeneralWarnings(string message) { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - Write(GENERAL_WARNING_MESSAGES_SOURCE, TraceEventType.Warning, message); - } - - /// - /// Writes the general errors. - /// - /// The message. - /// The trace levels may be controlled from App.config by setting - /// the level for AdsClientLibs.GeneralWarningMessages trace switch. - public static void WriteGeneralErrors(string message) { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - Write(GENERAL_WARNING_MESSAGES_SOURCE, TraceEventType.Error, message); - } - - /// - /// Writes detailed HTTP request logs. - /// - /// The HTTP request logs. - /// Indicates whether or not these are error logs. - /// The trace levels may be controlled from App.config by setting - /// the level for AdsClientLibs.DetailedRequestLogs trace switch. - public static void WriteDetailedRequestLogs(string message, Boolean isError) { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - TraceEventType type = isError ? TraceEventType.Information : TraceEventType.Verbose; - Write(DETAILED_REQUEST_LOGS_SOURCE, type, message); - } - - /// - /// Writes the summarized HTTP request logs. - /// - /// The summarized HTTP request logs. - /// Indicates whether or not these are error logs. - /// The trace levels may be controlled from App.config by setting - /// the level for AdsClientLibs.SummaryRequestLogs trace switch. - public static void WriteSummaryRequestLogs(string message, Boolean isError) { - // Mark the usage. - featureUsageRegistry.MarkUsage(FEATURE_ID); - - TraceEventType type = isError ? TraceEventType.Warning : TraceEventType.Information; - Write(SUMMARY_REQUEST_LOGS_SOURCE, type, message); - } - - /// - /// Writes to the specified Trace source. - /// - /// The trace source. - /// The message level. - /// The message. - private static void Write(string source, TraceEventType level, string message) { - TraceSource messageTrace = GetSource(source); - messageTrace.TraceEvent(level, ADS_API_TRACE_ID, message); - messageTrace.Flush(); - } - } -} diff --git a/dfp/src/Common/Util/XmlUtilities.cs b/dfp/src/Common/Util/XmlUtilities.cs deleted file mode 100755 index 3e7c4079191..00000000000 --- a/dfp/src/Common/Util/XmlUtilities.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2016, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -using System.IO; -using System.Text; -using System.Xml; - -namespace Google.Api.Ads.Common.Util { - /// - /// Utilities for working with XML. - /// - public class XmlUtilities { - - /// - /// Loads a string into an XML document that that has XXE disabled. - /// - /// The XML document contents as a text. - /// An XML Document object, with the contents loaded into the - /// DOM. - public static XmlDocument CreateDocument(string contents) { - return CreateDocument(Encoding.UTF8.GetBytes(contents)); - } - - /// - /// Loads the contents of a byte array into an XML document that - /// has XXE disabled. - /// - /// The XML document contents as a byte array. - /// An XML Document object, with the contents loaded into the - /// DOM. - public static XmlDocument CreateDocument(byte[] contents) { - return CreateDocument(new MemoryStream(contents)); - } - - /// - /// Loads the contents of a stream into an XML document that has XXE - /// disabled. - /// - /// The content stream. - /// An XML Document object, with the contents loaded into the - /// DOM. - public static XmlDocument CreateDocument(Stream stream) { - XmlReaderSettings settings = new XmlReaderSettings() { - DtdProcessing = DtdProcessing.Prohibit - }; - XmlReader reader = XmlReader.Create(stream, settings); - XmlDocument doc = new XmlDocument(); - doc.Load(reader); - return doc; - } - } -} diff --git a/dfp/tests/Common/Common.Tests.csproj b/dfp/tests/Common/Common.Tests.csproj deleted file mode 100755 index 09ca23d1928..00000000000 --- a/dfp/tests/Common/Common.Tests.csproj +++ /dev/null @@ -1,120 +0,0 @@ - - - - Debug - AnyCPU - 9.0.21022 - 2.0 - {7AA5533E-FED0-4E0C-919C-19E7D7EE2FF6} - Library - Properties - Google.Api.Ads.Common.Tests - Google.Ads.Common.Tests - v4.5.2 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - true - true - $(ProjectDir)..\..\src\Common\AdsApi.snk - - - - - - - - - - ..\..\lib\NUnit\nunit.framework.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - Resources.resx - - - - - {277404DB-A439-4450-B3A5-186294CDF245} - Common - - - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - - - - - - - - - - - - - diff --git a/dfp/tests/Common/HttpMessage.cs b/dfp/tests/Common/HttpMessage.cs deleted file mode 100755 index 2cd4d2c1aa7..00000000000 --- a/dfp/tests/Common/HttpMessage.cs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -namespace Google.Api.Ads.Common.Tests { - /// - /// Represents an HTTP request / response pair to be mocked. - /// - public class HttpMessage { - /// - /// Request body. - /// - string request; - - /// - /// Response body. - /// - string response; - - /// - /// Response type. - /// - string responseType; - - /// - /// Overloaded constructor. - /// - /// The request body. - /// The response body. - /// The response type. - public HttpMessage(string request, string response, string responseType) { - this.request = request; - this.response = response; - this.responseType = responseType; - } - - /// - /// Gets the request. - /// - public string Request { - get { - return request; - } - } - - /// - /// Gets the response. - /// - public string Response { - get { - return response; - } - } - - /// - /// Gets the response type. - /// - public string ResponseType { - get { - return responseType; - } - } - } -} diff --git a/dfp/tests/Common/Lib/AdsExceptionTests.cs b/dfp/tests/Common/Lib/AdsExceptionTests.cs deleted file mode 100755 index 4e7a624ae7f..00000000000 --- a/dfp/tests/Common/Lib/AdsExceptionTests.cs +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Tests.Mocks; - -using NUnit.Framework; - -using System; -using System.IO; -using System.Runtime.Serialization.Formatters.Binary; - -namespace Google.Api.Ads.Common.Tests.Lib { - /// - /// Coverage tests for AdsException class. - /// - public class AdsExceptionTests { - /// - /// Message to be used for running tests. - /// - private string message = "This is a test message"; - - /// - /// Inner exception to be used for running tests. - /// - private ApplicationException innerException = new ApplicationException(); - - /// - /// Tests the default constructor. - /// - [Test] - [Category("Small")] - public void TestContructor1() { - Assert.DoesNotThrow(delegate() { - AdsException exception = new MockAdsException(); - }); - } - - /// - /// Tests the overloaded constructors. - /// - [Test] - [Category("Small")] - public void TestContructor2() { - AdsException exception = new MockAdsException(message); - Assert.AreEqual(message, exception.Message); - Assert.Null(exception.InnerException); - } - - /// - /// Tests the overloaded constructors. - /// - [Test] - [Category("Small")] - public void TestContructor3() { - AdsException exception = new MockAdsException(message, innerException); - Assert.AreEqual(message, exception.Message); - Assert.AreEqual(innerException, exception.InnerException); - } - - /// - /// Tests the protected serialization constructor. - /// - [Test] - [Category("Small")] - public void TestContructor4() { - Assert.DoesNotThrow(delegate() { - MockAdsException exception = new MockAdsException(); - exception.MockProperty = 2; - BinaryFormatter formatter = new BinaryFormatter(); - MemoryStream memStream = new MemoryStream(); - formatter.Serialize(memStream, exception); - memStream.Seek(0, SeekOrigin.Begin); - MockAdsException exception1 = (MockAdsException) formatter.Deserialize(memStream); - memStream.Dispose(); - Assert.AreEqual(2, exception1.MockProperty); - }); - } - } -} diff --git a/dfp/tests/Common/Lib/AdsOAuthExceptionTests.cs b/dfp/tests/Common/Lib/AdsOAuthExceptionTests.cs deleted file mode 100755 index 74649b31dcf..00000000000 --- a/dfp/tests/Common/Lib/AdsOAuthExceptionTests.cs +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using NUnit.Framework; - -using System; -using System.IO; -using System.Runtime.Serialization.Formatters.Binary; - -namespace Google.Api.Ads.Common.Tests.Lib { - /// - /// Coverage tests for AdsOAuthException class. - /// - public class AdsOAuthExceptionTests { - /// - /// Message to be used for running tests. - /// - private string message = "This is a test message"; - - /// - /// Inner exception to be used for running tests. - /// - private ApplicationException innerException = new ApplicationException(); - - /// - /// Tests the overloaded constructors. - /// - [Test] - [Category("Small")] - public void TestContructor1() { - AdsOAuthException exception = new AdsOAuthException(message); - Assert.AreEqual(message, exception.Message); - Assert.Null(exception.InnerException); - } - - /// - /// Tests the overloaded constructors. - /// - [Test] - [Category("Small")] - public void TestContructor2() { - AdsOAuthException exception = new AdsOAuthException(message, innerException); - Assert.AreEqual(message, exception.Message); - Assert.AreEqual(innerException, exception.InnerException); - } - - /// - /// Tests the default constructor. - /// - [Test] - [Category("Small")] - public void TestContructor3() { - AdsOAuthException exception = new AdsOAuthException(); - Assert.AreEqual("Exception of type 'Google.Api.Ads.Common.Lib." + - "AdsOAuthException' was thrown.", exception.Message); - Assert.Null(exception.InnerException); - } - - /// - /// Tests the protected serialization constructor. - /// - [Test] - [Category("Small")] - public void TestContructor4() { - Assert.DoesNotThrow(delegate() { - AdsOAuthException exception = new AdsOAuthException(); - BinaryFormatter formatter = new BinaryFormatter(); - MemoryStream memStream = new MemoryStream(); - formatter.Serialize(memStream, exception); - memStream.Seek(0, SeekOrigin.Begin); - formatter.Deserialize(memStream); - memStream.Dispose(); - }); - } - } -} diff --git a/dfp/tests/Common/Lib/AppConfigBaseTests.cs b/dfp/tests/Common/Lib/AppConfigBaseTests.cs deleted file mode 100755 index c7e68410861..00000000000 --- a/dfp/tests/Common/Lib/AppConfigBaseTests.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Tests.Mocks; - -using NUnit.Framework; - -using System.Collections.Generic; -using System.Net; - -namespace Google.Api.Ads.Common.Tests.Lib { - - /// - /// Coverage tests for AppConfigBase class. - /// - public class AppConfigBaseTests { - - /// - /// The dictionary to hold the test data. - /// - private Dictionary dictSettings; - - /// - /// Inits this instance. - /// - [SetUp] - [Category("Small")] - public void Init() { - dictSettings = new Dictionary(); - dictSettings.Add("ProxyServer", "http://localhost/"); - dictSettings.Add("ProxyUser", "ProxyUser"); - dictSettings.Add("ProxyPassword", "ProxyPassword"); - dictSettings.Add("ProxyDomain", "ProxyDomain"); - dictSettings.Add("MaskCredentials", "false"); - dictSettings.Add("Timeout", "20"); - dictSettings.Add("RetryCount", "5"); - - dictSettings.Add("OAuth2ClientId", "OAuth2ClientId"); - dictSettings.Add("OAuth2ClientSecret", "OAuth2ClientSecret"); - dictSettings.Add("OAuth2ServiceAccountEmail", "OAuth2ServiceAccountEmail"); - dictSettings.Add("OAuth2PrnEmail", "OAuth2PrnEmail"); - dictSettings.Add("OAuth2AccessToken", "OAuth2AccessToken"); - dictSettings.Add("OAuth2RefreshToken", "OAuth2RefreshToken"); - dictSettings.Add("OAuth2Scope", "OAuth2Scope"); - dictSettings.Add("OAuth2RedirectUri", "OAuth2RedirectUri"); - dictSettings.Add("OAuth2Mode", "SERVICE_ACCOUNT"); - - dictSettings.Add("EnableGzipCompression", "false"); - } - - /// - /// Tests the overloaded constructors. - /// - [Test] - [Category("Small")] - public void TestReadSettings() { - MockAppConfig config = new MockAppConfig(); - config.MockReadSettings(dictSettings); - NetworkCredential credential = (NetworkCredential) config.Proxy.Credentials; - Assert.AreEqual(dictSettings["ProxyUser"].ToString(), credential.UserName); - Assert.AreEqual(dictSettings["ProxyPassword"].ToString(), credential.Password); - Assert.AreEqual(dictSettings["ProxyDomain"].ToString(), credential.Domain); - Assert.AreEqual(bool.Parse(dictSettings["MaskCredentials"].ToString()), - config.MaskCredentials); - Assert.AreEqual(int.Parse(dictSettings["Timeout"].ToString()), config.Timeout); - Assert.AreEqual(int.Parse(dictSettings["RetryCount"].ToString()), config.RetryCount); - - Assert.AreEqual(dictSettings["OAuth2ClientId"].ToString(), config.OAuth2ClientId); - Assert.AreEqual(dictSettings["OAuth2ClientSecret"].ToString(), config.OAuth2ClientSecret); - Assert.AreEqual(dictSettings["OAuth2PrnEmail"].ToString(), config.OAuth2PrnEmail); - Assert.AreEqual(dictSettings["OAuth2AccessToken"].ToString(), config.OAuth2AccessToken); - Assert.AreEqual(dictSettings["OAuth2RefreshToken"].ToString(), config.OAuth2RefreshToken); - Assert.AreEqual(dictSettings["OAuth2Scope"].ToString(), config.OAuth2Scope); - Assert.AreEqual(dictSettings["OAuth2RedirectUri"].ToString(), config.OAuth2RedirectUri); - Assert.AreEqual(dictSettings["OAuth2Mode"].ToString(), config.OAuth2Mode.ToString()); - - Assert.AreEqual(bool.Parse(dictSettings["EnableGzipCompression"].ToString()), - config.EnableGzipCompression); - } - - /// - /// Tests the overloaded constructors. - /// - [Test] - [Category("Small")] - public void TestReadSettingsForDefaults() { - Assert.DoesNotThrow(delegate() { - MockAppConfig config = new MockAppConfig(); - config.MockReadSettings(null); - }); - } - - /// - /// Tests the timeout property setters and getters. - /// - [Test] - [Category("Small")] - public void TestTimeout() { - MockAppConfig config = new MockAppConfig(); - config.Timeout = 20; - Assert.AreEqual(20, config.Timeout); - } - - /// - /// Tests the retry count property setters and getters. - /// - [Test] - [Category("Small")] - public void TestRetryCount() { - MockAppConfig config = new MockAppConfig(); - config.RetryCount = 20; - Assert.AreEqual(20, config.RetryCount); - } - - /// - /// Tests the signature property getter. - /// - [Test] - [Category("Small")] - public void TestSignature() { - MockAppConfig config = new MockAppConfig(); - Assert.NotNull(config.Signature); - } - } -} diff --git a/dfp/tests/Common/Lib/OAuth2JwtClaimsetTests.cs b/dfp/tests/Common/Lib/OAuth2JwtClaimsetTests.cs deleted file mode 100755 index e8b4883ddf1..00000000000 --- a/dfp/tests/Common/Lib/OAuth2JwtClaimsetTests.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using NUnit.Framework; - -using Google.Api.Ads.Common.Lib; - -using System; - -namespace Google.Api.Ads.Common.Tests.Lib { - /// - /// Tests for OAuth2JwtClaimset class. - /// - public class OAuth2JwtClaimsetTests { - - /// - /// Tests ToJson with impersonation. - /// - [Test] - public void TestToJsonWithImpersonationHasPrn() { - OAuth2JwtClaimset claimset = new OAuth2JwtClaimset(); - claimset.serviceAccountEmail = "serviceAccountEmail"; - claimset.scope = "scope"; - claimset.audience = "audience"; - claimset.expiry = 1; - claimset.timestamp = 2; - claimset.impersonationEmail = "impersonationEmail"; - - Assert.AreEqual("{\"iss\":\"serviceAccountEmail\", \"scope\":\"scope\", " + - "\"aud\":\"audience\", \"exp\":1, \"iat\":2, \"prn\":\"impersonationEmail\"}", - claimset.ToJson()); - } - - /// - /// Tests ToJson without impersonation. - /// - [Test] - public void TestToJsonWithoutImpersonationDoesNotHavePrn() { - OAuth2JwtClaimset claimset = new OAuth2JwtClaimset(); - claimset.serviceAccountEmail = "serviceAccountEmail"; - claimset.scope = "scope"; - claimset.audience = "audience"; - claimset.expiry = 1; - claimset.timestamp = 2; - - Assert.AreEqual("{\"iss\":\"serviceAccountEmail\", \"scope\":\"scope\", " + - "\"aud\":\"audience\", \"exp\":1, \"iat\":2}", claimset.ToJson()); - } - } -} diff --git a/dfp/tests/Common/Lib/OAuth2ProviderForApplicationsTests.cs b/dfp/tests/Common/Lib/OAuth2ProviderForApplicationsTests.cs deleted file mode 100755 index a209d11503c..00000000000 --- a/dfp/tests/Common/Lib/OAuth2ProviderForApplicationsTests.cs +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using NUnit.Framework; - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Tests; -using Google.Api.Ads.Common.Tests.Mocks; - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Reflection; -using System.Text; - - -namespace Google.Api.Ads.Common.Tests.Lib { - /// - /// Tests for OAuth2ProviderForApplications class. - /// - public class OAuth2ProviderForApplicationsTests { - private OAuth2ProviderForApplications provider; - - private MockAppConfig appConfig; - private OAuth2RequestInterceptor oauth2RequestInterceptor = - (OAuth2RequestInterceptor) OAuth2RequestInterceptor.Instance; - - /// - /// The dictionary to hold the test data. - /// - private Dictionary dictSettings; - - // Keys for TestPropertySettersAndGetters. - private const string TEST_CLIENT_ID = "TEST_CLIENT_ID"; - private const string TEST_CLIENT_SECRET = "TEST_CLIENT_SECRET"; - private const string TEST_ACCESS_TOKEN = OAuth2RequestInterceptor.TEST_ACCESS_TOKEN; - private const string TEST_REFRESH_TOKEN = OAuth2RequestInterceptor.TEST_REFRESH_TOKEN; - private const string TEST_SCOPE = "TEST_SCOPE"; - private const string TEST_STATE = "TEST_STATE"; - private const bool TEST_OFFLINE = false; - private readonly OAuthTokensObtainedCallback TEST_CALLBACK = - delegate(AdsOAuthProvider provider) {}; - private const string TEST_REDIRECT_URI = "TEST_REDIRECT_URI"; - - /// - /// Signed request for getting access token for an installed application. - /// - private const string FETCH_ACCESS_TOKEN_REQUEST = "code=https%3a%2f%2faccounts.goog" + - "le.com%2fo%2foauth2%2fauth%3fscope%3dOAuth2Scope%26state%3d%26redirect_uri%3dO" + - "Auth2RedirectUri%26response_type%3dcode%26client_id%3dOAuth2ClientId%26access_" + - "type%3doffline&client_id=OAuth2ClientId&client_secret=OAuth2ClientSecret&redir" + - "ect_uri=OAuth2RedirectUri&grant_type=authorization_code"; - - /// - /// Authorization url for OAuth2. - /// - private const string AUTHORIZATION_URL = "https://accounts.google.com/o/oauth2/auth?" + - "scope=OAuth2Scope&state=&redirect_uri=OAuth2RedirectUri&response_type=code&clie" + - "nt_id=OAuth2ClientId&access_type=offline"; - - /// - /// Signed request for rereshing access token for an installed application. - /// - private const string REFRESH_ACCESS_TOKEN_REQUEST = "client_id=OAuth2ClientId&clien" + - "t_secret=OAuth2ClientSecret&refresh_token=" + TEST_REFRESH_TOKEN + - "&grant_type=refresh_token"; - - /// - /// OAuth2 url for revoking a refresh token. - /// - private const string REVOKE_REFRESH_TOKEN_URL = "https://accounts.google.com/o/oauth" + - "2/revoke?token=" + TEST_REFRESH_TOKEN; - - /// - /// OAuth2 authorization header. - /// - private const String AUTHORIZATION_HEADER = "Bearer " + TEST_ACCESS_TOKEN; - - /// - /// OAuth2 authorization code. - /// - private const string AUTHORIZATION_CODE = "AuthorizationCode"; - - /// - /// Initializes the test case. - /// - [SetUp] - public void Init() { - dictSettings = new Dictionary(); - - dictSettings.Add("OAuth2ClientId", "OAuth2ClientId"); - dictSettings.Add("OAuth2ClientSecret", "OAuth2ClientSecret"); - dictSettings.Add("OAuth2AccessToken", "OAuth2AccessToken"); - dictSettings.Add("OAuth2RefreshToken", "OAuth2RefreshToken"); - dictSettings.Add("OAuth2Scope", "OAuth2Scope"); - dictSettings.Add("OAuth2RedirectUri", "OAuth2RedirectUri"); - - appConfig = new MockAppConfig(); - appConfig.MockReadSettings(dictSettings); - provider = new OAuth2ProviderForApplications(appConfig); - oauth2RequestInterceptor.Intercept = true; - } - - /// - /// Tears down the test case. - /// - [TearDown] - public void TearDown() { - oauth2RequestInterceptor.Intercept = false; - } - - /// - /// Tests the default constructor. - /// - [Test] - public void TestConstructor() { - provider = new OAuth2ProviderForApplications(appConfig); - Assert.AreEqual(provider.ClientId, appConfig.OAuth2ClientId); - Assert.AreEqual(provider.ClientSecret, appConfig.OAuth2ClientSecret); - Assert.AreEqual(provider.AccessToken, appConfig.OAuth2AccessToken); - Assert.AreEqual(provider.RefreshToken, appConfig.OAuth2RefreshToken); - Assert.AreEqual(provider.Scope, appConfig.OAuth2Scope); - Assert.AreEqual(provider.RedirectUri, appConfig.OAuth2RedirectUri); - } - - /// - /// Tests the OAuth2 access token expiration logic. - /// - [Test] - public void TestIsAccessTokenExpiring() { - MethodInfo mi = typeof(OAuth2ProviderBase).GetMethod("IsAccessTokenExpiring", - BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.FlattenHierarchy); - - provider.OAuth2RefreshCutoffLimit = 60; - - // Test if token is not expired if there's > 60 seconds remaining. - provider.UpdatedOn = DateTime.UtcNow.Subtract(new TimeSpan(0, 0, 1800)); - provider.ExpiresIn = 3600; - Assert.False((bool) mi.Invoke(provider, null)); - - // Test if token is expired if there's 60 seconds or lesser remaining. - provider.UpdatedOn = DateTime.UtcNow.Subtract(new TimeSpan(0, 0, 3600)); - provider.ExpiresIn = 3600 - provider.OAuth2RefreshCutoffLimit; - Assert.True((bool) mi.Invoke(provider, null)); - - // Test if token is expired if there's no time left for expiration. - provider.UpdatedOn = DateTime.UtcNow.Subtract(new TimeSpan(0, 0, 3700)); - provider.ExpiresIn = 3600; - Assert.True((bool) mi.Invoke(provider, null)); - } - - /// - /// Tests if we can the fetch access and refresh tokens for installed - /// clients. - /// - [Test] - public void TestFetchAccessAndRefreshTokens() { - TestUtils.ValidateRequiredParameters(provider, new string[] {"ClientId", "ClientSecret"}, - delegate() { - provider.RefreshAccessToken(); - } - ); - - oauth2RequestInterceptor.RequestType = - OAuth2RequestInterceptor.OAuth2RequestType.FetchAccessAndRefreshToken; - WebRequestInterceptor.OnBeforeSendResponse callback = delegate(Uri uri, - WebHeaderCollection headers, String body) { - Assert.AreEqual(FETCH_ACCESS_TOKEN_REQUEST, body); - }; - try { - oauth2RequestInterceptor.BeforeSendResponse += callback; - provider.FetchAccessAndRefreshTokens(AUTHORIZATION_URL); - Assert.AreEqual(provider.AccessToken, OAuth2RequestInterceptor.TEST_ACCESS_TOKEN); - Assert.AreEqual(provider.RefreshToken, OAuth2RequestInterceptor.TEST_REFRESH_TOKEN); - Assert.AreEqual(provider.TokenType, OAuth2RequestInterceptor.ACCESS_TOKEN_TYPE); - Assert.AreEqual(provider.ExpiresIn.ToString(), OAuth2RequestInterceptor.EXPIRES_IN); - } finally { - oauth2RequestInterceptor.BeforeSendResponse -= callback; - } - } - - /// - /// Tests if we can refresh an access token for installed clients. - /// - [Test] - public void TestRefreshAccessToken() { - TestUtils.ValidateRequiredParameters(provider, new string[] {"RefreshToken"}, delegate() { - provider.RefreshAccessToken(); - }); - provider.IsOffline = false; - Assert.Throws(delegate() { - provider.RefreshAccessToken(); - }); - provider.IsOffline = true; - - oauth2RequestInterceptor.RequestType = - OAuth2RequestInterceptor.OAuth2RequestType.RefreshAccessToken; - WebRequestInterceptor.OnBeforeSendResponse callback = delegate(Uri uri, - WebHeaderCollection headers, String body) { - Assert.AreEqual(REFRESH_ACCESS_TOKEN_REQUEST, body); - }; - try { - provider.RefreshToken = TEST_REFRESH_TOKEN; - oauth2RequestInterceptor.BeforeSendResponse += callback; - provider.RefreshAccessToken(); - Assert.AreEqual(provider.RefreshToken, TEST_REFRESH_TOKEN); - Assert.AreEqual(provider.TokenType, OAuth2RequestInterceptor.ACCESS_TOKEN_TYPE); - Assert.AreEqual(provider.ExpiresIn.ToString(), OAuth2RequestInterceptor.EXPIRES_IN); - } finally { - oauth2RequestInterceptor.BeforeSendResponse -= callback; - } - } - - /// - /// Tests if we can revoke a refresh token. - /// - [Test] - public void TestRevokeRefreshToken() { - TestUtils.ValidateRequiredParameters(provider, new string[] {"RefreshToken"}, delegate() { - provider.RevokeRefreshToken(); - }); - - oauth2RequestInterceptor.RequestType = - OAuth2RequestInterceptor.OAuth2RequestType.RefreshAccessToken; - WebRequestInterceptor.OnBeforeSendResponse callback = delegate(Uri uri, - WebHeaderCollection headers, String body) { - Assert.AreEqual(uri.AbsoluteUri, REVOKE_REFRESH_TOKEN_URL); - }; - try { - provider.RefreshToken = OAuth2RequestInterceptor.TEST_REFRESH_TOKEN; - oauth2RequestInterceptor.BeforeSendResponse += callback; - provider.RevokeRefreshToken(); - } finally { - oauth2RequestInterceptor.BeforeSendResponse -= callback; - } - } - - /// - /// Tests if we can retrieve an authorization url for OAuth2 authorization - /// process. - /// - [Test] - public void TestGetAuthorizationUrl() { - provider = new OAuth2ProviderForApplications(appConfig); - - TestUtils.ValidateRequiredParameters(provider, new string[] {"ClientId", "Scope"}, - delegate() { - provider.GetAuthorizationUrl(); - } - ); - - Assert.AreEqual(AUTHORIZATION_URL, provider.GetAuthorizationUrl()); - } - - /// - /// Tests if we can retrieve an OAuth2 authorization header. - /// - [Test] - public void TestGetAuthHeader() { - provider = new OAuth2ProviderForApplications(appConfig); - Assert.AreEqual(AUTHORIZATION_HEADER, provider.GetAuthHeader()); - } - - /// - /// Tests the property setters and getters. - /// - [Test] - public void TestPropertySettersAndGetters() { - provider = new OAuth2ProviderForApplications(appConfig); - - provider.ClientId = TEST_CLIENT_ID; - Assert.AreEqual(provider.ClientId, TEST_CLIENT_ID); - - provider.ClientSecret = TEST_CLIENT_SECRET; - Assert.AreEqual(provider.ClientSecret, TEST_CLIENT_SECRET); - - provider.AccessToken = TEST_ACCESS_TOKEN; - Assert.AreEqual(provider.AccessToken, TEST_ACCESS_TOKEN); - - provider.RefreshToken = TEST_REFRESH_TOKEN; - Assert.AreEqual(provider.RefreshToken, TEST_REFRESH_TOKEN); - - provider.Scope = TEST_SCOPE; - Assert.AreEqual(provider.Scope, TEST_SCOPE); - - provider.State = TEST_STATE; - Assert.AreEqual(provider.State, TEST_STATE); - - provider.IsOffline = TEST_OFFLINE; - Assert.AreEqual(provider.IsOffline, TEST_OFFLINE); - - provider.OnOAuthTokensObtained = TEST_CALLBACK; - Assert.AreEqual(provider.OnOAuthTokensObtained, TEST_CALLBACK); - - provider.IsOffline = TEST_OFFLINE; - Assert.AreEqual(provider.IsOffline, TEST_OFFLINE); - - provider.RedirectUri = TEST_REDIRECT_URI; - Assert.AreEqual(provider.RedirectUri, TEST_REDIRECT_URI); - } - } -} diff --git a/dfp/tests/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs b/dfp/tests/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs deleted file mode 100755 index 3d1441988f4..00000000000 --- a/dfp/tests/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using NUnit.Framework; - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Tests; -using Google.Api.Ads.Common.Tests.Mocks; - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Reflection; -using System.Text; - -namespace Google.Api.Ads.Common.Tests.Lib { - /// - /// Tests for OAuth2ProviderForServiceAccounts class. - /// - public class OAuth2ProviderForServiceAccountsTests { - private OAuth2ProviderForServiceAccounts provider; - private OAuth2RequestInterceptor oauth2RequestInterceptor = - (OAuth2RequestInterceptor) OAuth2RequestInterceptor.Instance; - - /// - /// The dictionary to hold the test data. - /// - private Dictionary dictSettings; - - /// - /// Signed request for getting access token for a service account. - /// - private const string SERVICE_ACCOUNT_REQUEST = - "grant_type=urn%3aietf%3aparams%3aoauth%3agrant-type%3ajwt-bearer&assertion=" + - "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0ZXN0QHByb2plY3QtaWQtMTIzLm" + - "V4YW1wbGUuY29tIiwgInNjb3BlIjoiVEVTVF9TQ09QRSIsICJhdWQiOiJodHRwczovL2FjY291b" + - "nRzLmdvb2dsZS5jb20vby9vYXV0aDIvdG9rZW4iLCAiZXhwIjoxMzUzOTI4NTUxLCAiaWF0Ijox" + - "MzUzOTI0OTUxLCAicHJuIjoiVEVTVF9QUk5fRU1BSUwifQ.tkgcHzToMBX5dgTdnv0i_ej5tDJT" + - "gSmZ6xV-7YVaDvhmSsY_4zIXioyQO-KE-o--8rgINUqkPk5EXZ-qhpZ2sq1NiRWybqRnJQg2V9I" + - "SZ5ISVp4os_t9rsdsJYYGkrpVssPtbn-PkZIOaU1k0v7M6x_uxZumdYrZQcUOZBT0M0wztWOoRs" + - "PmTbHjW_lGIzwk4yZ09fndTTl-XKhXiA5pDVVLr5AQVnGiWicKxcgc7AMMLXrmF0ZC5yJz4gTtP" + - "--R-RSpZ2hhpZ7yI6fMXTnEOdEpZznB4vesvQ5Wv1wrZgBsFuyz4izS96aDMcm_9422Gzfr_EzG" + - "SSrkJbY9sxLywA"; - - /// - /// OAuth2 authorization header. - /// - private const String AUTHORIZATION_HEADER = "Bearer " + TEST_ACCESS_TOKEN; - - // Test values for various properties. - private const string TEST_CLIENT_ID = "TEST_CLIENT_ID"; - private const string TEST_CLIENT_SECRET = "TEST_CLIENT_SECRET"; - private const string TEST_REDIRECT_URI = "TEST_REDIRECT_URI"; - private const string TEST_ACCESS_TOKEN = OAuth2RequestInterceptor.TEST_ACCESS_TOKEN; - private const string TEST_SCOPE = "TEST_SCOPE"; - private const string TEST_STATE = "TEST_STATE"; - private readonly OAuthTokensObtainedCallback TEST_CALLBACK = - delegate(AdsOAuthProvider provider) {}; - private const string TEST_PRN_EMAIL = "TEST_PRN_EMAIL"; - - /// - /// Initializes the test case. - /// - [SetUp] - public void Init() { - dictSettings = InitSettingsDict(true); - oauth2RequestInterceptor.Intercept = true; - } - - /// - /// Initializes the settings table. - /// - /// True, if a value should be set to - /// if set to OAuth2SecretsJsonPath property, false otherwise. - /// The initialized settings dictionary. - private Dictionary InitSettingsDict(bool setJsonSecretsFile) { - Dictionary retval = new Dictionary(); - retval.Add("OAuth2ClientId", TEST_CLIENT_ID); - retval.Add("OAuth2ClientSecret", TEST_CLIENT_SECRET); - retval.Add("OAuth2PrnEmail", TEST_PRN_EMAIL); - retval.Add("OAuth2AccessToken", TEST_ACCESS_TOKEN); - retval.Add("OAuth2Scope", TEST_SCOPE); - retval.Add("OAuth2RedirectUri", TEST_REDIRECT_URI); - retval.Add("OAuth2SecretsJsonPath", GetSecretsFilePath()); - return retval; - } - - /// - /// Gets the JSON secrets file path for test purposes. - /// - /// The JSON secrets file path. - private static string GetSecretsFilePath() { - string tempSecretsPath = Path.GetTempFileName(); - using (FileStream fs = File.OpenWrite(tempSecretsPath)) { - fs.Write(Resources.secret, 0, Resources.secret.Length); - } - return tempSecretsPath; - } - - /// - /// Tears down the test case. - /// - [TearDown] - public void TearDown() { - oauth2RequestInterceptor.Intercept = false; - } - - /// - /// Tests the default constructor. - /// - [Test] - public void TestConstructor() { - MockAppConfig config = new MockAppConfig(); - config.MockReadSettings(dictSettings); - provider = new OAuth2ProviderForServiceAccounts(config); - - Assert.AreEqual(provider.ClientId, config.OAuth2ClientId); - Assert.AreEqual(provider.ClientSecret, config.OAuth2ClientSecret); - Assert.AreEqual(provider.AccessToken, config.OAuth2AccessToken); - Assert.AreEqual(provider.Scope, config.OAuth2Scope); - Assert.AreEqual(provider.ServiceAccountEmail, config.OAuth2ServiceAccountEmail); - Assert.AreEqual(provider.PrnEmail, config.OAuth2PrnEmail); - Assert.AreEqual(provider.JwtPrivateKey, config.OAuth2PrivateKey); - Assert.AreEqual(provider.ServiceAccountEmail, config.OAuth2ServiceAccountEmail); - } - - /// - /// Tests if we can generate an access token for service accounts. - /// - [Test] - public void TestGenerateAccessTokenForServiceAccounts() { - MockAppConfig config = new Mocks.MockAppConfig(); - config.MockReadSettings(dictSettings); - provider = new OAuth2ProviderForServiceAccounts(config); - - TestUtils.ValidateRequiredParameters(provider, new string[] {"ServiceAccountEmail", - "Scope", "JwtPrivateKey"}, - delegate() { - provider.GenerateAccessTokenForServiceAccount(); - } - ); - oauth2RequestInterceptor.RequestType = - OAuth2RequestInterceptor.OAuth2RequestType.FetchAccessTokenForServiceAccount; - WebRequestInterceptor.OnBeforeSendResponse callback = delegate(Uri uri, - WebHeaderCollection headers, String body) { - Assert.AreEqual(SERVICE_ACCOUNT_REQUEST, body); - }; - try { - oauth2RequestInterceptor.BeforeSendResponse += callback; - provider.GenerateAccessTokenForServiceAccount(); - Assert.AreEqual(provider.AccessToken, OAuth2RequestInterceptor.TEST_ACCESS_TOKEN); - Assert.AreEqual(provider.TokenType, OAuth2RequestInterceptor.ACCESS_TOKEN_TYPE); - Assert.AreEqual(provider.ExpiresIn.ToString(), OAuth2RequestInterceptor.EXPIRES_IN); - } finally { - oauth2RequestInterceptor.BeforeSendResponse -= callback; - } - } - - /// - /// Tests if we can retrieve an OAuth2 authorization header. - /// - [Test] - public void TestGetAuthHeader() { - MockAppConfig config = new MockAppConfig(); - config.MockReadSettings(dictSettings); - provider = new OAuth2ProviderForServiceAccounts(config); - Assert.AreEqual(AUTHORIZATION_HEADER, provider.GetAuthHeader()); - } - - /// - /// Tests the property setters and getters. - /// - [Test] - public void TestPropertySettersAndGetters() { - MockAppConfig config = new MockAppConfig(); - config.MockReadSettings(dictSettings); - provider = new OAuth2ProviderForServiceAccounts(config); - - provider.ClientId = TEST_CLIENT_ID; - Assert.AreEqual(provider.ClientId, TEST_CLIENT_ID); - - provider.ClientSecret = TEST_CLIENT_SECRET; - Assert.AreEqual(provider.ClientSecret, TEST_CLIENT_SECRET); - - provider.AccessToken = TEST_ACCESS_TOKEN; - Assert.AreEqual(provider.AccessToken, TEST_ACCESS_TOKEN); - - provider.Scope = TEST_SCOPE; - Assert.AreEqual(provider.Scope, TEST_SCOPE); - - provider.State = TEST_STATE; - Assert.AreEqual(provider.State, TEST_STATE); - - provider.OnOAuthTokensObtained = TEST_CALLBACK; - Assert.AreEqual(provider.OnOAuthTokensObtained, TEST_CALLBACK); - } - } -} diff --git a/dfp/tests/Common/Lib/ServiceFactoryTests.cs b/dfp/tests/Common/Lib/ServiceFactoryTests.cs deleted file mode 100755 index 08e1b6b7504..00000000000 --- a/dfp/tests/Common/Lib/ServiceFactoryTests.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Tests.Mocks; - -using NUnit.Framework; - -using System; - -namespace Google.Api.Ads.Common.Tests.Lib { - /// - /// Tests the ServiceFactory class. - /// - public class ServiceFactoryTests { - /// - /// The test configuration class. - /// - MockAppConfig config = new MockAppConfig(); - - /// - /// Tests the property setters and getters. - /// - [Test] - [Category("Small")] - public void TestProperties() { - ServiceFactory serviceFactory = new MockServiceFactory(); - serviceFactory.Config = config; - Assert.AreEqual(config, serviceFactory.Config); - } - } -} diff --git a/dfp/tests/Common/Lib/ServiceSignatureTests.cs b/dfp/tests/Common/Lib/ServiceSignatureTests.cs deleted file mode 100755 index 99b817e2bef..00000000000 --- a/dfp/tests/Common/Lib/ServiceSignatureTests.cs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Tests.Mocks; - -using NUnit.Framework; - -using System; - -namespace Google.Api.Ads.Common.Tests.Lib { - /// - /// Tests the ServiceSignature class. - /// - public class ServiceSignatureTests { - /// - /// The test version string. - /// - const string VERSION = "TEST_VERSION"; - - /// - /// The test service name string. - /// - const string SERVICE_NAME = "SERVICE_NAME"; - - /// - /// The test protocol. - /// - const ServiceSignature.SupportedProtocols PROTOCOLS = ServiceSignature.SupportedProtocols.SOAP; - - /// - /// Tests the property setters and getters. - /// - [Test] - [Category("Small")] - public void TestProperties() { - MockServiceSignature signature = new MockServiceSignature(VERSION, SERVICE_NAME, PROTOCOLS); - Assert.AreEqual(VERSION, signature.Version); - Assert.AreEqual(SERVICE_NAME, signature.ServiceName); - Assert.AreEqual(PROTOCOLS, signature.SupportedProtocol); - Assert.NotNull(signature.Id); - Assert.Null(signature.ServiceType); - } - } -} diff --git a/dfp/tests/Common/Logging/DefaultBodyFormatterTests.cs b/dfp/tests/Common/Logging/DefaultBodyFormatterTests.cs deleted file mode 100755 index 4fba252a6aa..00000000000 --- a/dfp/tests/Common/Logging/DefaultBodyFormatterTests.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Collections.Generic; - -namespace Google.Api.Ads.Common.Tests.Util { - - /// - /// UnitTests for class. - /// - [TestFixture] - public class DefaultBodyFormatterTests { - /// - /// The request body to be used for testing. - /// - private const string BODY = "KEY1=foo;KEY2=bar"; - - /// - /// The keys to be masked in the request. - /// - private ISet KEYS = new HashSet() { "KEY1", "KEY2" }; - - /// - /// Test for DefaultBodyFormatter.MaskContents method. - /// - [Test] - public void TestMaskContents() { - Assert.AreEqual(BODY, new DefaultBodyFormatter().MaskContents(BODY, KEYS)); - } - } -} \ No newline at end of file diff --git a/dfp/tests/Common/Logging/JsonBodyFormatterTests.cs b/dfp/tests/Common/Logging/JsonBodyFormatterTests.cs deleted file mode 100755 index ff369b33662..00000000000 --- a/dfp/tests/Common/Logging/JsonBodyFormatterTests.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Collections.Generic; -using System.Web.Script.Serialization; - -namespace Google.Api.Ads.Common.Tests.Util { - - /// - /// UnitTests for class. - /// - [TestFixture] - public class JsonBodyFormatterTests { - private const string KEY1 = "KEY1"; - private const string KEY2 = "KEY2"; - private const string KEY3 = "KEY3"; - - private const string VALUE1 = "VALUE1"; - private const string VALUE2 = "VALUE2"; - private const string VALUE3 = "VALUE3"; - - /// - /// The request body to be used for testing. - /// - private readonly string BODY = string.Format("{{'{0}': '{1}', '{2}': '{3}', '{4}': '{5}'}}", - KEY1, VALUE1, KEY2, VALUE2, KEY3, VALUE3); - - /// - /// The keys to be masked in the request. - /// - private ISet KEYS = new HashSet() { KEY1, KEY2 }; - - /// - /// Test for JsonBodyFormatter.MaskContents method. - /// - [Test] - public void TestMaskContents() { - string maskedBody = new JsonBodyFormatter().MaskContents(BODY, KEYS); - JavaScriptSerializer serializer = new JavaScriptSerializer(); - Dictionary jsonDict = - serializer.Deserialize>(maskedBody); - - Assert.AreEqual(jsonDict[KEY1], TraceFormatter.MASK_PATTERN); - Assert.AreEqual(jsonDict[KEY2], TraceFormatter.MASK_PATTERN); - Assert.AreEqual(jsonDict[KEY3], VALUE3); - } - } -} \ No newline at end of file diff --git a/dfp/tests/Common/Logging/KeyValueMessageFormatterTests.cs b/dfp/tests/Common/Logging/KeyValueMessageFormatterTests.cs deleted file mode 100755 index 68a36318f79..00000000000 --- a/dfp/tests/Common/Logging/KeyValueMessageFormatterTests.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Collections.Generic; -using System.Web.Script.Serialization; - -namespace Google.Api.Ads.Common.Tests.Util { - - /// - /// UnitTests for class. - /// - [TestFixture] - public class KeyValueMessageFormatterTests { - private const string KEY1 = "KEY1"; - private const string KEY2 = "KEY2"; - private const string KEY3 = "KEY3"; - - private const string VALUE1 = "VALUE1"; - private const string VALUE2 = "VALUE2"; - private const string VALUE3 = "VALUE3"; - - /// - /// The request body to be used for testing. - /// - private readonly string BODY = string.Format("{0}={1}\r\n{2}={3}\r\n{4}={5}", - KEY1, VALUE1, KEY2, VALUE2, KEY3, VALUE3); - - private readonly string FORMATTED_BODY = string.Format("{0}={1}\r\n{2}={3}\r\n{4}={5}", - KEY1, KeyValueMessageFormatter.MASK_PATTERN, KEY2, KeyValueMessageFormatter.MASK_PATTERN, - KEY3, VALUE3); - /// - /// The keys to be masked in the request. - /// - private ISet KEYS = new HashSet() { KEY1, KEY2 }; - - /// - /// Test for KeyValueMessageFormatter.MaskContents method. - /// - [Test] - public void TestMaskContents() { - string maskedBody = new KeyValueMessageFormatter().MaskContents(BODY, KEYS); - Assert.AreEqual(FORMATTED_BODY, maskedBody); - } - } -} \ No newline at end of file diff --git a/dfp/tests/Common/Logging/SoapTraceFormatterTests.cs b/dfp/tests/Common/Logging/SoapTraceFormatterTests.cs deleted file mode 100755 index 3a9ed866bf3..00000000000 --- a/dfp/tests/Common/Logging/SoapTraceFormatterTests.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Collections.Generic; -using System.Xml; - -namespace Google.Api.Ads.Common.Tests.Util { - - /// - /// UnitTests for class. - /// - [TestFixture] - public class SoapTraceFormatterTests { - /// - /// The keys to be masked in the request. - /// - private ISet KEYS = new HashSet() { "KEY1", "KEY2" }; - - /// - /// Test for SoapTraceFormatter.MaskContents method. - /// - [Test] - public void TestMaskContents() { - string maskedBody = new SoapTraceFormatter().MaskContents(Resources.SoapRequest, KEYS); - XmlDocument xDoc = XmlUtilities.CreateDocument(maskedBody); - XmlNamespaceManager xmlns = new XmlNamespaceManager(xDoc.NameTable); - xmlns.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/"); - xmlns.AddNamespace("cm", "https://adwords.google.com/api/adwords/cm/v201409"); - - // Test masking on header nodes. - XmlNodeList childNodes = xDoc.SelectNodes( - "soap:Envelope/soap:Header/cm:RequestHeader/child::*", xmlns); - foreach (XmlElement childNode in childNodes) { - if (KEYS.Contains(childNode.LocalName)) { - Assert.AreEqual(childNode.InnerText, SoapTraceFormatter.MASK_PATTERN); - } - } - - // Test masking on body nodes. - childNodes = xDoc.SelectNodes("soap:Envelope/soap:Body/cm:get/child::*", xmlns); - foreach (XmlElement childNode in childNodes) { - if (KEYS.Contains(childNode.LocalName)) { - Assert.AreEqual(childNode.InnerText, SoapTraceFormatter.MASK_PATTERN); - } - } - } - } -} \ No newline at end of file diff --git a/dfp/tests/Common/Logging/TraceHelperTests.cs b/dfp/tests/Common/Logging/TraceHelperTests.cs deleted file mode 100755 index bab5b50bb90..00000000000 --- a/dfp/tests/Common/Logging/TraceHelperTests.cs +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Tests.Mocks; -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Collections.Generic; -using System.IO; -using System.Net; - -namespace Google.Api.Ads.Common.Tests.Util { - - /// - /// UnitTests for class. - /// - [TestFixture] - public class TraceHelperTests { - /// - /// The mock date and time provider. - /// - private readonly DateTimeProvider DATE_PROVIDER = new MockDateTimeProvider(); - - /// - /// The mock application configuration. - /// - private readonly AppConfig CONFIG = new MockAppConfig(); - - /// - /// The instance for running tests. - /// - private readonly LogEntry logEntry; - - /// - /// The SOAP trace formatter. - /// - private readonly SoapTraceFormatter SOAP_FORMATTER = new SoapTraceFormatter(); - - /// - /// An HTTP request for testing purposes. - /// - WebRequest testRequest; - - /// - /// An HTTP response for testing purposes. - /// - WebResponse testResponse; - - /// - /// The temporary file that stores the SOAP request and response. - /// - private string tempFile; - - /// - /// The keys to mask in the request XML. - /// - private ISet KEYS = new HashSet() { "KEY1", "KEY2" }; - - /// - /// The template string for logged requests. - /// - private const string LOGGED_REQUEST = @" ------------------BEGIN API CALL--------------------- - -Request -------- - -GET {0} -TimeStamp: {1} - - -{2}"; - - /// - /// The template string for logged responses. - /// - private const string LOGGED_RESPONSE = @" - -Response --------- - -Content-Length: {0} -Content-Type: application/octet-stream -TimeStamp: {1} - - -{2} ------------------END API CALL-----------------------"; - - /// - /// Initializes a new instance of the class. - /// - public TraceHelperTests() { - logEntry = new LogEntry(CONFIG, DATE_PROVIDER); - } - - /// - /// Creates the test file for writing the SOAP request and response. - /// - /// The temporary path for creating the file. - private void CreateTestFile(string path) { - FileStream fs = File.OpenWrite(path); - using (StreamWriter writer = new StreamWriter(fs)) { - writer.Write(Resources.SoapRequest); - } - fs.Close(); - } - - /// - /// Normalize line endings to the current Environment.NewLine. - /// - /// The string to normalize. - private string NormalizeNewLines(string str) { - return str.Replace("\r\n", "\n").Replace("\n", System.Environment.NewLine); - } - - /// - /// Initializes this test instance. - /// - [SetUp] - public void Init() { - tempFile = Path.GetTempFileName(); - CreateTestFile(tempFile); - testRequest = HttpWebRequest.Create(tempFile); - testResponse = testRequest.GetResponse(); - } - - /// - /// Cleanups this test instance. - /// - [TearDown] - public void Cleanup() { - try { - File.Delete(tempFile); - } catch { - } - } - - /// - /// Test for TraceHelper.LogRequest method with masking turned on. - /// - [Test] - public void TestLogRequestWithMasking() { - logEntry.LogRequestDetails(new RequestInfo(testRequest, Resources.SoapRequest), - KEYS, SOAP_FORMATTER); - string log = NormalizeNewLines(logEntry.DetailedRequestLog.Trim()); - - string maskedMessage = SOAP_FORMATTER.MaskContents(Resources.SoapRequest, KEYS).Trim(); - string expectedMessage = NormalizeNewLines(string.Format(LOGGED_REQUEST, - testRequest.RequestUri.AbsolutePath, - DATE_PROVIDER.Now.ToString("R"), maskedMessage).Trim()); - Assert.AreEqual(expectedMessage, log); - } - - /// - /// Test for TraceHelper.LogResponse method with masking turned on. - /// - [Test] - public void TestLogResponseWithMasking() { - logEntry.LogRequestDetails(new RequestInfo(testRequest, Resources.SoapRequest), - KEYS, SOAP_FORMATTER); - string log = NormalizeNewLines(logEntry.DetailedRequestLog.Trim()); - - string maskedMessage = SOAP_FORMATTER.MaskContents(Resources.SoapRequest, KEYS).Trim(); - string expectedMessage = NormalizeNewLines(string.Format(LOGGED_REQUEST, - testRequest.RequestUri.AbsolutePath, - DATE_PROVIDER.Now.ToString("R"), maskedMessage).Trim()); - - Assert.AreEqual(expectedMessage, log); - } - } -} diff --git a/dfp/tests/Common/Logging/TraceListenerTests.cs b/dfp/tests/Common/Logging/TraceListenerTests.cs deleted file mode 100755 index 283c218a59f..00000000000 --- a/dfp/tests/Common/Logging/TraceListenerTests.cs +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Tests.Mocks; -using Google.Api.Ads.Common.Util; -using NUnit.Framework; - -using System; -using System.Xml; - -namespace Google.Api.Ads.Common.Tests.Logging { - - /// - /// Tests for TraceListener class. - /// - public class TraceListenerTests { - - /// - /// The AppConfig instance for testing this class. - /// - private MockAppConfig config = new MockAppConfig(); - - /// - /// The TraceListener instance for testing this class. - /// - private MockTraceListener listener; - - /// - /// The AdsUser instance for testing this class. - /// - private MockAdsUser user; - - /// - /// The AdsClient instance for testing this class. - /// - private MockAdsClient adsClient; - - /// - /// Initializes the test case. - /// - [SetUp] - public void Init() { - user = new MockAdsUser(config); - adsClient = new MockAdsClient(); - adsClient.User = user; - - MockWebResponse response = new MockWebResponse(null, null); - response.Headers["TestResponseKey"] = "TestResponseValue"; - adsClient.LastResponse = response; - - MockWebRequest request = new MockWebRequest(response, new Uri("http://localhost"), null, - false); - request.Method = "POST"; - request.Headers["TestRequestKey"] = "TestRequestValue"; - adsClient.LastRequest = request; - } - - /// - /// Tears down the test case. - /// - [TearDown] - public void Dispose() { - listener.CleanupAfterCall(); - } - - /// - /// Tests the HandleMessage method. - /// - [Test] - [Category("Small")] - public void TestHandleMessage() { - config.SetPropertyFieldForTests("MaskCredentials", true); - listener = new MockTraceListener(config); - - XmlDocument xOutgoing = XmlUtilities.CreateDocument(Resources.XmlRequest); - listener.HandleMessage(xOutgoing, adsClient, SoapMessageDirection.OUT); - Assert.AreEqual(xOutgoing.OuterXml, ContextStore.GetValue("SoapRequest")); - - XmlDocument xIncoming = XmlUtilities.CreateDocument(Resources.XmlResponse); - listener.HandleMessage(xIncoming, adsClient, SoapMessageDirection.IN); - Assert.AreEqual(xIncoming.OuterXml, ContextStore.GetValue("SoapResponse")); - string expected = Resources.SoapLog.Replace("\r\n", "\n").Trim(); - string actual = ((string) ContextStore.GetValue("FormattedSoapLog")). - Replace("\r\n", "\n").Trim(); - Assert.AreEqual(expected, actual); - Assert.AreEqual(Resources.ResponseLog.Replace("\r\n", "\n"), - ((string) ContextStore.GetValue("FormattedRequestLog")).Replace("\r\n", "\n")); - } - - /// - /// Tests the HandleMessage method to see if logging doesn't happen if - /// the AdsClient instance is null. - /// - [Test] - [Category("Small")] - public void TestHandleMessageNoClient() { - config.SetPropertyFieldForTests("MaskCredentials", true); - listener = new MockTraceListener(config); - - XmlDocument xOutgoing = XmlUtilities.CreateDocument(Resources.XmlRequest); - listener.HandleMessage(xOutgoing, null, SoapMessageDirection.OUT); - Assert.AreEqual(xOutgoing.OuterXml, ContextStore.GetValue("SoapRequest")); - - XmlDocument xIncoming = XmlUtilities.CreateDocument(Resources.XmlResponse); - listener.HandleMessage(xIncoming, null, SoapMessageDirection.IN); - Assert.AreEqual(xIncoming.OuterXml, ContextStore.GetValue("SoapResponse")); - Assert.IsNull(ContextStore.GetValue("FormattedSoapLog")); - Assert.IsNull(ContextStore.GetValue("FormattedRequestLog")); - } - - /// - /// Tests the CleanupAfterCall method. - /// - [Test] - [Category("Small")] - public void TestCleanupAfterCall() { - listener = new MockTraceListener(config); - ContextStore.AddKey("SoapRequest", "SoapRequest"); - ContextStore.AddKey("SoapResponse", "SoapResponse"); - ContextStore.AddKey("FormattedSoapLog", "FormattedSoapLog"); - ContextStore.AddKey("FormattedRequestLog", "FormattedRequestLog"); - listener.CleanupAfterCall(); - Assert.Null(ContextStore.GetValue("SoapRequest")); - Assert.Null(ContextStore.GetValue("SoapResponse")); - Assert.Null(ContextStore.GetValue("FormattedSoapLog")); - Assert.Null(ContextStore.GetValue("FormattedRequestLog")); - } - } -} diff --git a/dfp/tests/Common/Logging/UrlEncodedBodyFormatterTests.cs b/dfp/tests/Common/Logging/UrlEncodedBodyFormatterTests.cs deleted file mode 100755 index 1d9efcb6004..00000000000 --- a/dfp/tests/Common/Logging/UrlEncodedBodyFormatterTests.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Logging; -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Collections.Generic; -using System.Web; -using System.Web.Script.Serialization; - -namespace Google.Api.Ads.Common.Tests.Util { - - /// - /// UnitTests for class. - /// - [TestFixture] - public class UrlEncodedBodyFormatterTests { - private const string KEY1 = "KEY1"; - private const string KEY2 = "KEY2"; - private const string KEY3 = "KEY3"; - - private const string VALUE1 = "VALUE1"; - private const string VALUE2 = "VALUE2"; - private const string VALUE3 = "VALUE3"; - - /// - /// The request body to be used for testing. - /// - private readonly string BODY = string.Format("{0}={1}&{2}={3}&{4}={5}", - HttpUtility.UrlEncode(KEY1), - HttpUtility.UrlEncode(VALUE1), - HttpUtility.UrlEncode(KEY2), - HttpUtility.UrlEncode(VALUE2), - HttpUtility.UrlEncode(KEY3), - HttpUtility.UrlEncode(VALUE3)); - - private readonly string FORMATTED_BODY = string.Format("{0}={1}&{2}={3}&{4}={5}", - HttpUtility.UrlEncode(KEY1), - KeyValueMessageFormatter.MASK_PATTERN, - HttpUtility.UrlEncode(KEY2), - KeyValueMessageFormatter.MASK_PATTERN, - HttpUtility.UrlEncode(KEY3), - HttpUtility.UrlEncode(VALUE3)); - /// - /// The keys to be masked in the request. - /// - private ISet KEYS = new HashSet() { KEY1, KEY2 }; - - /// - /// Test for KeyValueMessageFormatter.MaskContents method. - /// - [Test] - public void TestMaskContents() { - string maskedBody = new UrlEncodedBodyFormatter().MaskContents(BODY, KEYS); - Assert.AreEqual(FORMATTED_BODY, maskedBody); - } - } -} \ No newline at end of file diff --git a/dfp/tests/Common/MockWebRequest.cs b/dfp/tests/Common/MockWebRequest.cs deleted file mode 100755 index a9844eb57e1..00000000000 --- a/dfp/tests/Common/MockWebRequest.cs +++ /dev/null @@ -1,297 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; - -namespace Google.Api.Ads.Common.Tests { - /// - /// Represents a mock web request object used by WebRequestInterceptor. - /// - public class MockWebRequest : WebRequest { - /// - /// Timeout in milliseconds. - /// - int timeout; - - /// - /// The connection group name. - /// - string connectionGroupName; - - /// - /// The web credentials. - /// - ICredentials credentials; - - /// - /// Flag to decide whether or not to preauthenticate. - /// - bool preAuthenticate; - - /// - /// HTTP request content type. - /// - string contentType; - - /// - /// HTTP method name. - /// - string method; - - /// - /// HTTP request headers. - /// - WebHeaderCollection headers = new WebHeaderCollection(); - - /// - /// Request stream. - /// - MemoryStream requestStream = new MemoryStream(); - - /// - /// Response for this request. - /// - WebResponse webResponse; - - /// - /// Request url. - /// - Uri requestUri; - - /// - /// Web proxy. - /// - IWebProxy proxy; - - /// - /// Request content length in bytes. - /// - long contentLength; - - /// - /// Callback delegate before sending response. - /// - WebRequestInterceptor.OnBeforeSendResponse onBeforeSendResponse; - - /// - /// If set to true, then Get will return an error code rather - /// than a successful response. - /// - private bool raiseException; - - /// - /// Initializes a new instance of the class. - /// - /// The web response. - /// The request URI. - /// Callback to be called before sending - /// response. - public MockWebRequest(MockWebResponse webResponse, Uri requestUri, - WebRequestInterceptor.OnBeforeSendResponse onBeforeSendResponse, bool raiseException) { - this.webResponse = webResponse; - this.requestUri = requestUri; - this.onBeforeSendResponse = onBeforeSendResponse; - this.raiseException = raiseException; - } - - /// - /// Gets or sets the content length of the request data being sent. - /// - /// - /// The number of bytes of request data being sent. - /// - public override long ContentLength { - get { - return contentLength; - } - set { - contentLength = value; - } - } - - /// - /// Gets or sets the network proxy to use to access this Internet resource. - /// - /// - /// The to use to access the Internet - /// resource. - /// - public override IWebProxy Proxy { - get { - return proxy; - } - set { - proxy = value; - } - } - - /// - /// Gets or sets the length of time, in milliseconds, before the request - /// times out. - /// - /// - /// The length of time, in milliseconds, until the request times out, or - /// the value to indicate - /// that the request does not time out. The default value is defined by the - /// descendant class. - /// - public override int Timeout { - get { - return timeout; - } - set { - timeout = value; - } - } - - /// - /// Gets the URI of the Internet resource associated with the request. - /// - /// - /// A representing the resource associated with - /// the request - /// - public override Uri RequestUri { - get { - return requestUri; - } - } - - /// - /// Gets or sets the name of the connection group for the request. - /// - /// - /// The name of the connection group for the request. - /// - public override string ConnectionGroupName { - get { - return connectionGroupName; - } - set { - connectionGroupName = value; - } - } - - /// - /// Gets or sets the network credentials used for authenticating the request - /// with the Internet resource. - /// - /// - /// An containing the authentication - /// credentials associated with the request. The default is null. - /// - public override ICredentials Credentials { - get { - return credentials; - } - set { - credentials = value; - } - } - - /// - /// Indicates whether to pre-authenticate the request. - /// - /// true to pre-authenticate; otherwise, false. - /// - public override bool PreAuthenticate { - get { - return preAuthenticate; - } - set { - preAuthenticate = value; - } - } - - /// - /// Gets or sets the content type of the request data being sent. - /// - /// - /// The content type of the request data. - /// - public override string ContentType { - get { - return contentType; - } - set { - contentType = value; - } - } - - /// - /// Gets or sets the protocol method to use in this request. - /// - /// - /// The protocol method to use in this request. - /// - public override string Method { - get { - return method; - } - set { - method = value; - } - } - - /// - /// Gets or sets the collection of header name/value pairs associated with - /// the request. - /// - /// - /// A containing the header - /// name/value pairs associated with this request. - /// - public override WebHeaderCollection Headers { - get { - return headers; - } - set { - headers = value; - } - } - - /// - /// Returns a for writing data to the - /// Internet resource. - /// - /// - /// A for writing data to the Internet - /// resource. - /// - public override Stream GetRequestStream() { - return requestStream; - } - - /// - /// Returns a response to an Internet request. - /// - /// - /// A containing the response to the - /// Internet request. - /// - public override WebResponse GetResponse() { - onBeforeSendResponse(this.requestUri, headers, Encoding.UTF8.GetString( - requestStream.ToArray())); - if (raiseException) { - throw new WebException("", null, WebExceptionStatus.ProtocolError, webResponse); - } else { - return webResponse; - } - } - } -} diff --git a/dfp/tests/Common/MockWebResponse.cs b/dfp/tests/Common/MockWebResponse.cs deleted file mode 100755 index d6182c6b22b..00000000000 --- a/dfp/tests/Common/MockWebResponse.cs +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.IO; -using System.Net; -using System.Text; - -namespace Google.Api.Ads.Common.Tests { - /// - /// Represents a mock web response object used by WebRequestInterceptor. - /// - public class MockWebResponse : WebResponse { - /// - /// The response stream. - /// - MemoryStream responseStream; - - /// - /// The response content type. - /// - string contentType; - - /// - /// The HTTP response headers. - /// - WebHeaderCollection headers = new WebHeaderCollection(); - - /// - /// Initializes a new instance of the class. - /// - /// The mock response. - /// Type of the content. - public MockWebResponse(string mockResponse, string contentType) { - this.contentType = contentType; - this.responseStream = new MemoryStream(); - - if (mockResponse != null) { - byte[] data = Encoding.UTF8.GetBytes(mockResponse); - this.responseStream.Write(data, 0, data.Length); - } - } - - /// - /// Returns the data stream from the Internet resource. - /// - /// - /// An instance of the class for reading - /// data from the Internet resource. - /// - public override Stream GetResponseStream() { - this.responseStream.Seek(0, SeekOrigin.Begin); - return responseStream; - } - - /// - /// Closes the response stream. - /// - public override void Close() { - responseStream.Close(); - } - - /// - /// Gets or sets the content type of the data being received. - /// - /// - /// A string that contains the content type of the response. - /// - public override string ContentType { - get { - return contentType; - } - set { - contentType = value; - } - } - - /// - /// Gets or sets the content length of data being received. - /// - /// - /// The number of bytes returned from the Internet resource. - /// - public override long ContentLength { - get { - return base.ContentLength; - } - set { - base.ContentLength = value; - } - } - - /// - /// Gets a collection of header name-value pairs associated with this - /// request. - /// - /// - /// An instance of the class - /// that contains header values associated with this response. - /// - public override WebHeaderCollection Headers { - get { - return headers; - } - } - } -} diff --git a/dfp/tests/Common/Mocks/MockAdsClient.cs b/dfp/tests/Common/Mocks/MockAdsClient.cs deleted file mode 100755 index 7e2ebca56be..00000000000 --- a/dfp/tests/Common/Mocks/MockAdsClient.cs +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; -using System.Net; -using System.Security.Cryptography.X509Certificates; -using System.Text; - -namespace Google.Api.Ads.Common.Tests.Mocks { - /// - /// Implements a mock version of AdsClient interface for testing purposes. - /// - /// Only the properties needed for testing Ads.Common assembly are - /// implemented, all other properties throw a NotImplementedException. - /// - class MockAdsClient : AdsClient { - /// - /// The user who created this service. - /// - AdsUser user; - - /// - /// The webrequest used for making the last API call. - /// - WebRequest lastRequest; - - /// - /// The webresponse from the last API call. - /// - WebResponse response; - - /// - /// Gets or sets the AdsUser object that created this - /// service. - /// - public AdsUser User { - get { - return user; - } - set { - user = value; - } - } - - - /// - /// Gets or sets the signature for this service. - /// - public ServiceSignature Signature { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - /// - /// Gets or sets the web request associated with this service's - /// last API call. - /// - public WebRequest LastRequest { - get { - return lastRequest; - } - set { - lastRequest = value; - } - } - - /// - /// Gets or sets the web response associated with this service's - /// last API call. - /// - public WebResponse LastResponse { - get { - return response; - } - set { - response = value; - } - } - - #region Unimplemented Properties - - public string ConnectionGroupName { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public ICredentials Credentials { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public bool PreAuthenticate { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public Encoding RequestEncoding { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public int Timeout { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public string Url { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public bool UseDefaultCredentials { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public bool AllowAutoRedirect { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public X509CertificateCollection ClientCertificates { - get { throw new NotImplementedException(); } - } - - public CookieContainer CookieContainer { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public bool EnableDecompression { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public IWebProxy Proxy { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public bool UnsafeAuthenticatedConnectionSharing { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - public string UserAgent { - get { - throw new NotImplementedException(); - } - set { - throw new NotImplementedException(); - } - } - - #endregion - } -} diff --git a/dfp/tests/Common/Mocks/MockAdsException.cs b/dfp/tests/Common/Mocks/MockAdsException.cs deleted file mode 100755 index 09e3f64cf00..00000000000 --- a/dfp/tests/Common/Mocks/MockAdsException.cs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; -using System.Runtime.Serialization; -using System.Security.Permissions; - -namespace Google.Api.Ads.Common.Tests.Mocks { - /// - /// Implements a mock version of AdsException class for testing purposes. - /// - [Serializable()] - public class MockAdsException : AdsException { - /// - /// Mock property, for testing serialization. - /// - int mockProperty; - - /// - /// Gets or sets the mock property for testing serialization. - /// - /// - /// The mock property. - /// - public int MockProperty { - get { - return mockProperty; - } - set { - mockProperty = value; - } - } - - /// - /// Public constructor. - /// - public MockAdsException() : base() { - } - - /// - /// Public constructor. - /// - /// Error message for this API exception. - public MockAdsException(string message) : base(message) { - } - - /// - /// Public constructor. - /// - /// Error message for this API exception. - /// Inner exception, if any. - public MockAdsException(string message, Exception innerException) - : base(message, innerException) { - } - - - /// - /// Protected constructor. Used by serialization frameworks while - /// deserializing an exception object. - /// - /// Info about the serialization context. - /// A streaming context that represents the - /// serialization stream. - protected MockAdsException(SerializationInfo info, StreamingContext context) - : base(info, context) { - mockProperty = GetValue(info, "MockProperty"); - } - - /// - /// This method is called by serialization frameworks while serializing - /// an exception object. - /// - /// Info about the serialization context. - /// A streaming context that represents the - /// serialization stream. - [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)] - public override void GetObjectData(SerializationInfo info, StreamingContext context) { - base.GetObjectData(info, context); - info.AddValue("MockProperty", mockProperty); - } - } -} diff --git a/dfp/tests/Common/Mocks/MockAdsUser.cs b/dfp/tests/Common/Mocks/MockAdsUser.cs deleted file mode 100755 index d521ed54e16..00000000000 --- a/dfp/tests/Common/Mocks/MockAdsUser.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Logging; - -using System; - -namespace Google.Api.Ads.Common.Tests.Mocks { - /// - /// Implments a mock version of AdsUser class for testing purposes. - /// - class MockAdsUser : AdsUser { - /// - /// Overloaded constructor. - /// - /// The configuration class. - public MockAdsUser(MockAppConfig config) - : base(config) { - } - - /// - /// Gets all the service types to be registered against this user. - /// - /// - /// The type of all service classes to be registered. - /// - public override Type[] GetServiceTypes() { - return null; - } - - /// - /// Gets the default listeners. - /// - /// - /// A list of default listeners - /// - public override SoapListener[] GetDefaultListeners() { - return new SoapListener[] {new MockTraceListener(this.Config)}; - } - } -} diff --git a/dfp/tests/Common/Mocks/MockAppConfig.cs b/dfp/tests/Common/Mocks/MockAppConfig.cs deleted file mode 100755 index c07bc86b9ac..00000000000 --- a/dfp/tests/Common/Mocks/MockAppConfig.cs +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; -using System.Collections; -using System.Collections.Generic; - -namespace Google.Api.Ads.Common.Tests.Mocks { - /// - /// Implements a mock version of AppConfigBase class for testing purposes. - /// - public class MockAppConfig : AppConfigBase { - /// - /// The short name to identify this assembly. - /// - private const string SHORT_NAME = "Mock-DotNet"; - - private const long TEST_TIMESTAMP = 1353924951; - - private const string TEST_OAUTH2_SCOPE = "TEST_OAUTH2_SCOPE"; - - /// - /// Default constuctor. - /// - public MockAppConfig() : base() { - } - - /// - /// Gets the number of seconds after Jan 1, 1970, 00:00:00 - /// - public override long UnixTimestamp { - get { - return TEST_TIMESTAMP; - } - } - - /// - /// Gets the default OAuth2 scope. - /// - /// - public override string GetDefaultOAuth2Scope() { - return TEST_OAUTH2_SCOPE; - } - - /// - /// Allows the test cases to call ReadSettings method for testing purposes. - /// - /// The configuration settings. - /// AppConfigBase class loads its settings from App.config, and the - /// framework calls ReadSettings method to load the values. However, this is - /// a protected method, so we expose ReadSettings in the mock version to - /// allow easier configuration of AppConfig while running test cases. - /// - public void MockReadSettings(Dictionary dictSettings) { - base.ReadSettings(dictSettings); - } - - /// - /// Sets the property field for tests. - /// - /// Name of the property. - /// The new value. - /// Most properties in AppConfigBase class are readonly, and are - /// initalized at during the creation of the AppConfig instance. However, - /// it is desirable during testing to change the value of one of these - /// properties so that we can avoid initializing a new AppConfig instance - /// just to test the coverage of another class that uses the config class. - /// - public void SetPropertyFieldForTests(string propertyName, object newValue) { - this.GetType().GetProperty(propertyName).SetValue(this, newValue, null); - } - } -} diff --git a/dfp/tests/Common/Mocks/MockDateTimeProvider.cs b/dfp/tests/Common/Mocks/MockDateTimeProvider.cs deleted file mode 100755 index 2d2eaf1db32..00000000000 --- a/dfp/tests/Common/Mocks/MockDateTimeProvider.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using System; - -namespace Google.Api.Ads.Common.Tests.Mocks { - - /// - /// Mock Date time provider for testing purposes. - /// - public class MockDateTimeProvider : DateTimeProvider { - - /// - /// Gets the mocked time. - /// - public DateTime Now { - get { - return new DateTime(2014, 11, 3, 12, 25, 30); - } - } - } -} \ No newline at end of file diff --git a/dfp/tests/Common/Mocks/MockServiceFactory.cs b/dfp/tests/Common/Mocks/MockServiceFactory.cs deleted file mode 100755 index a37bc1975cf..00000000000 --- a/dfp/tests/Common/Mocks/MockServiceFactory.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using System; - -namespace Google.Api.Ads.Common.Tests.Mocks { - /// - /// Implements a mock version of the ServiceFactory interface for testing - /// purposes. - /// - public class MockServiceFactory : ServiceFactory { - /// - /// Create a service object. - /// - /// Signature of the service being created. - /// The user for which the service is being created. - /// The server to which the API calls should be - /// made. - /// - /// - /// An object of the desired service type. - /// - public override AdsClient CreateService(ServiceSignature signature, AdsUser user, - Uri serverUrl) { - return null; - } - - /// - /// Reads the headers from App.config. - /// - /// The configuration class. - protected override void ReadHeadersFromConfig(AppConfig config) { - return; - } - - /// - /// Checks preconditions of the service signature and throws and exception if the service - /// cannot be generated. - /// - /// the service signature for generating the service - protected override void CheckServicePreconditions(ServiceSignature signature) { - return; - } - } -} diff --git a/dfp/tests/Common/Mocks/MockServiceSignature.cs b/dfp/tests/Common/Mocks/MockServiceSignature.cs deleted file mode 100755 index b7d0d3e7b1f..00000000000 --- a/dfp/tests/Common/Mocks/MockServiceSignature.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; - -namespace Google.Api.Ads.Common.Tests.Mocks { - /// - /// Implements a mock version of the ServiceSignature class for testing - /// purposes. - /// - public class MockServiceSignature : ServiceSignature { - /// - /// Initializes a new instance of the - /// class. - /// - /// The version. - /// Name of the service. - /// The protocols. - public MockServiceSignature(string version, string serviceName, SupportedProtocols protocols) - : base(version, serviceName, protocols) { - } - - /// - /// Gets the type of service. - /// - public override Type ServiceType { - get { - return null; - } - } - } -} diff --git a/dfp/tests/Common/Mocks/MockTraceListener.cs b/dfp/tests/Common/Mocks/MockTraceListener.cs deleted file mode 100755 index 1bb792bc426..00000000000 --- a/dfp/tests/Common/Mocks/MockTraceListener.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Logging; - -using System; -using System.Collections.Generic; - -namespace Google.Api.Ads.Common.Tests.Mocks { - /// - /// Implements a mock version of the TraceListener class for testing purposes. - /// - class MockTraceListener : TraceListener { - /// - /// Initializes a new instance of the class. - /// - /// The config class. - public MockTraceListener(AppConfig config) : base(config) { - this.DateTimeProvider = new MockDateTimeProvider(); - } - - /// - /// Gets a list of fields to be masked in xml logs. - /// - /// - /// The list of fields to be masked. - /// - protected override ISet GetFieldsToMask() { - return new HashSet(new string[] { "authToken", "developerToken" }, - StringComparer.OrdinalIgnoreCase); - } - } -} diff --git a/dfp/tests/Common/OAuth2RequestInterceptor.cs b/dfp/tests/Common/OAuth2RequestInterceptor.cs deleted file mode 100755 index e700cc655c7..00000000000 --- a/dfp/tests/Common/OAuth2RequestInterceptor.cs +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; -using Google.Api.Ads.Common.Tests; - -using System; -using System.Collections.Generic; -using System.Net; -using System.Text; - -namespace Google.Api.Ads.Common.Tests { - /// - /// Intercepts calls to OAuth2 API for testing purposes. - /// - public class OAuth2RequestInterceptor : WebRequestInterceptor { - /// - /// Type of OAuth2 requests that can be mocked by this interceptor. - /// - public enum OAuth2RequestType { - FetchAccessAndRefreshToken, - FetchAccessTokenForServiceAccount, - RefreshAccessToken, - RevokeRefreshToken - } - - /// - /// Type of OAuth2 request being mocked by this interceptor. - /// - private OAuth2RequestType requestType; - - /// - /// Url prefix for OAuth2 requests. - /// - public const string OAUTH2_URL_PREFIX = "https://accounts.google.com/o/oauth2"; - - /// - /// Access token returned by interceptor. - /// - public const string TEST_ACCESS_TOKEN = "TEST_ACCESS_TOKEN"; - - /// - /// Refresh token returned by interceptor. - /// - public const string TEST_REFRESH_TOKEN = "TEST_REFRESH_TOKEN"; - - /// - /// Access token type returned by interceptor. - /// - public const string ACCESS_TOKEN_TYPE = "Bearer"; - - /// - /// Access token expiration returned by interceptor. - /// - public const string EXPIRES_IN = "3600"; - - /// - /// Mock response when requesting access token for serviced accounts. - /// - private const string SERVICED_ACCOUNT_RESPONSE = "{\r\n\"access_token\" : \"" + - TEST_ACCESS_TOKEN + "\",\r\n\"token_type\" : \"" + ACCESS_TOKEN_TYPE + - "\",\r\n \"expires_in\" : " + EXPIRES_IN + "\r\n}"; - - /// - /// Mock response when reqquesting access token in offline mode for - /// installed clients. - /// - private const string ACCESS_REFRESH_TOKEN_RESPONSE = "{\r\n\"access_token\" " + - ": \"" + TEST_ACCESS_TOKEN + "\",\r\n" + - "\"token_type\" : \"" + ACCESS_TOKEN_TYPE + "\",\r\n\"expires_in\" : " + - EXPIRES_IN + ",\"refresh_token\"" + " : \"" + TEST_REFRESH_TOKEN + "\"\r\n}"; - - /// - /// Mock response when refreshing access token for installed clients. - /// - private const string REFRESH_TOKEN_RESPONSE = "{\r\n\"access_token\" : \"" + - TEST_ACCESS_TOKEN + "\",\r\n\"token_type\" : \"" + ACCESS_TOKEN_TYPE + - "\", \"expires_in\" : " + EXPIRES_IN + "}"; - - /// - /// Content type for OAuth2 API calls. - /// - private const string OAUTH2_RESPONSE_TYPE = "application/json"; - - /// - /// Singleton instance. - /// - private static WebRequestInterceptor instance; - - - /// - /// Gets the only instance. - /// - public static WebRequestInterceptor Instance { - get { - return instance; - } - } - - /// - /// Gets or sets the type of the request being handled by this interceptor. - /// - public OAuth2RequestType RequestType { - get { - return requestType; - } - set { - requestType = value; - } - } - - /// - /// Initializes the class. - /// - static OAuth2RequestInterceptor() { - instance = new OAuth2RequestInterceptor(); - WebRequest.RegisterPrefix(OAUTH2_URL_PREFIX, instance); - } - - /// - /// Gets the next message to be mocked. - /// - /// - /// An HttpMessage object that represents the next message. - /// - public override HttpMessage GetNextMessage() { - string message = null; - switch (RequestType) { - case OAuth2RequestType.FetchAccessTokenForServiceAccount: - message = SERVICED_ACCOUNT_RESPONSE; - break; - - case OAuth2RequestType.FetchAccessAndRefreshToken: - message = ACCESS_REFRESH_TOKEN_RESPONSE; - break; - - case OAuth2RequestType.RefreshAccessToken: - message = REFRESH_TOKEN_RESPONSE; - break; - - case OAuth2RequestType.RevokeRefreshToken: - message = ""; - break; - } - return new HttpMessage(null, message, OAUTH2_RESPONSE_TYPE); - } - } -} diff --git a/dfp/tests/Common/Resources.Designer.cs b/dfp/tests/Common/Resources.Designer.cs deleted file mode 100755 index 7f714f86868..00000000000 --- a/dfp/tests/Common/Resources.Designer.cs +++ /dev/null @@ -1,177 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34209 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Google.Api.Ads.Common.Tests { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Google.Api.Ads.Common.Tests.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] certificate { - get { - object obj = ResourceManager.GetObject("certificate", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized string similar to host=localhost,url=/,,Result=Success. - /// - internal static string ResponseLog { - get { - return ResourceManager.GetString("ResponseLog", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] secret { - get { - object obj = ResourceManager.GetObject("secret", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized string similar to -----------------BEGIN API CALL--------------------- - /// - ///Request - ///------- - /// - ///POST / - ///TestRequestKey: TestRequestValue - ///TimeStamp: Mon, 03 Nov 2014 12:25:30 GMT - /// - /// - ///<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><RequestHeader xmlns="https://adwords.google.com/api/adwords/cm/v201109"><authToken xmlns="https://adwords.google.com/api/adwords/cm/v2011 [rest of string was truncated]";. - /// - internal static string SoapLog { - get { - return ResourceManager.GetString("SoapLog", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><RequestHeader xmlns="https://adwords.google.com/api/adwords/cm/v201409"><KEY1>VALUE1</KEY1><KEY2>VALUE2</KEY2><KEY3>VALUE3</KEY3></RequestHeader></soap:Header><soap:Body><get xmlns="https://adwords.google.com/api/adwords/cm/v201409"><serviceSelector><fields>Id</fields><fields>Name</fields>< [rest of string was truncated]";. - /// - internal static string SoapRequest { - get { - return ResourceManager.GetString("SoapRequest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to <?xml version="1.0" encoding="utf-8"?> - ///<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - /// <soap:Header> - /// <RequestHeader xmlns="https://adwords.google.com/api/adwords/cm/v201109"> - /// <authToken xmlns="https://adwords.google.com/api/adwords/cm/v201109">TEST_AUTHTOKEN</authToken> - /// <developerToken xmlns="https://adwords.google.com/api/adwords/cm/v201109">TEST_DEVELOPER_TOKEN</devel [rest of string was truncated]";. - /// - internal static string XmlRequest { - get { - return ResourceManager.GetString("XmlRequest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - /// <soap:Header> - /// <ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/v201109"> - /// <requestId>0004bf2e364aeb380ae752d50000576f</requestId> - /// <serviceName>CampaignService</serviceName> - /// <methodName>get</methodName> - /// <operations>8</operations> - /// <responseTime>1665</responseTime> - /// <units>8</units> - /// </ResponseHeader> - /// </soap:Header> - /// <soap:Body> - /// <getResponse xmlns="https://adwords.google.com/ [rest of string was truncated]";. - /// - internal static string XmlResponse { - get { - return ResourceManager.GetString("XmlResponse", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to <?xml version="1.0" encoding="UTF-8"?> - /// <!DOCTYPE foo [ - /// <!ELEMENT foo ANY > - /// <!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]><foo>&xxe;</foo>. - /// - internal static string XxeExample { - get { - return ResourceManager.GetString("XxeExample", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] Utf8Bom { - get { - object obj = ResourceManager.GetObject("Utf8Bom", resourceCulture); - return ((byte[])(obj)); - } - } - } -} diff --git a/dfp/tests/Common/Resources.resx b/dfp/tests/Common/Resources.resx deleted file mode 100755 index c9e871f2bf5..00000000000 --- a/dfp/tests/Common/Resources.resx +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Resources\certificate.p12;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - host=localhost,url=/,,Result=Success - - - -----------------BEGIN API CALL--------------------- - -Request -------- - -POST / -TestRequestKey: TestRequestValue -TimeStamp: Mon, 03 Nov 2014 12:25:30 GMT - - -<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><RequestHeader xmlns="https://adwords.google.com/api/adwords/cm/v201109"><authToken xmlns="https://adwords.google.com/api/adwords/cm/v201109">REDACTED</authToken><developerToken xmlns="https://adwords.google.com/api/adwords/cm/v201109">REDACTED</developerToken><clientCustomerId xmlns="https://adwords.google.com/api/adwords/cm/v201109">TEST_CUSTOMERID</clientCustomerId><userAgent xmlns="https://adwords.google.com/api/adwords/cm/v201109">TEST_USERAGENT</userAgent></RequestHeader></soap:Header><soap:Body><get xmlns="https://adwords.google.com/api/adwords/cm/v201109"><serviceSelector><fields>Id</fields><fields>Name</fields><fields>Status</fields><paging><startIndex>0</startIndex><numberResults>500</numberResults></paging></serviceSelector></get></soap:Body></soap:Envelope> - -Response --------- - -TestResponseKey: TestResponseValue -TimeStamp: Mon, 03 Nov 2014 12:25:30 GMT - - -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/v201109"><requestId>0004bf2e364aeb380ae752d50000576f</requestId><serviceName>CampaignService</serviceName><methodName>get</methodName><operations>8</operations><responseTime>1665</responseTime><units>8</units></ResponseHeader></soap:Header><soap:Body><getResponse xmlns="https://adwords.google.com/api/adwords/cm/v201109"><rval><totalNumEntries>8</totalNumEntries><Page.Type>CampaignPage</Page.Type><totalBudget><period>DAILY</period><amount><ComparableValue.Type>Money</ComparableValue.Type><microAmount>0</microAmount></amount></totalBudget><entries><id>61561890</id><name>Test Adx Campaign</name><status>ACTIVE</status><conversionOptimizerEligibility><eligible>false</eligible><rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons><rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons></conversionOptimizerEligibility><campaignStats><network>ALL</network><Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap></entries><entries><id>62798730</id><name>Interplanetary Cruise #1284660861</name><status>PAUSED</status><conversionOptimizerEligibility><eligible>false</eligible><rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons><rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons><rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons></conversionOptimizerEligibility><campaignStats><network>ALL</network><Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap></entries><entries><id>82779810</id><name>Interplanetary Cruise #1302802125300</name><status>PAUSED</status><conversionOptimizerEligibility><eligible>false</eligible><rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons><rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons><rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons></conversionOptimizerEligibility><campaignStats><network>ALL</network><Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap></entries><entries><id>84762330</id><name>Interplanetary Cruise #1304540562541</name><status>PAUSED</status><conversionOptimizerEligibility><eligible>false</eligible><rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons><rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons><rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons></conversionOptimizerEligibility><campaignStats><network>ALL</network><Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap></entries><entries><id>84765690</id><name>Interplanetary Cruise #367921212517452011</name><status>PAUSED</status><conversionOptimizerEligibility><eligible>false</eligible><rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons><rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons><rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons></conversionOptimizerEligibility><campaignStats><network>ALL</network><Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap></entries><entries><id>84765810</id><name>Interplanetary Cruise #396773322517452011</name><status>PAUSED</status><conversionOptimizerEligibility><eligible>false</eligible><rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons><rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons><rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons></conversionOptimizerEligibility><campaignStats><network>ALL</network><Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap></entries><entries><id>109690890</id><name>RTB Test Campaign</name><status>ACTIVE</status><conversionOptimizerEligibility><eligible>false</eligible><rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons><rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons></conversionOptimizerEligibility><campaignStats><network>ALL</network><Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap></entries><entries><id>114182850</id><name>Campaign #1</name><status>ACTIVE</status><conversionOptimizerEligibility><eligible>false</eligible><rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons><rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons></conversionOptimizerEligibility><campaignStats><network>ALL</network><Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap></entries></rval></getResponse></soap:Body></soap:Envelope> ------------------END API CALL----------------------- - - - <?xml version="1.0" encoding="utf-8"?> -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <soap:Header> - <RequestHeader xmlns="https://adwords.google.com/api/adwords/cm/v201109"> - <authToken xmlns="https://adwords.google.com/api/adwords/cm/v201109">TEST_AUTHTOKEN</authToken> - <developerToken xmlns="https://adwords.google.com/api/adwords/cm/v201109">TEST_DEVELOPER_TOKEN</developerToken> - <clientCustomerId xmlns="https://adwords.google.com/api/adwords/cm/v201109">TEST_CUSTOMERID</clientCustomerId> - <userAgent xmlns="https://adwords.google.com/api/adwords/cm/v201109">TEST_USERAGENT</userAgent> - </RequestHeader> - </soap:Header> - <soap:Body> - <get xmlns="https://adwords.google.com/api/adwords/cm/v201109"> - <serviceSelector> - <fields>Id</fields> - <fields>Name</fields> - <fields>Status</fields> - <paging> - <startIndex>0</startIndex> - <numberResults>500</numberResults> - </paging> - </serviceSelector> - </get> - </soap:Body> -</soap:Envelope> - - - <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Header> - <ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/v201109"> - <requestId>0004bf2e364aeb380ae752d50000576f</requestId> - <serviceName>CampaignService</serviceName> - <methodName>get</methodName> - <operations>8</operations> - <responseTime>1665</responseTime> - <units>8</units> - </ResponseHeader> - </soap:Header> - <soap:Body> - <getResponse xmlns="https://adwords.google.com/api/adwords/cm/v201109"> - <rval> - <totalNumEntries>8</totalNumEntries> - <Page.Type>CampaignPage</Page.Type> - <totalBudget> - <period>DAILY</period> - <amount> - <ComparableValue.Type>Money</ComparableValue.Type> - <microAmount>0</microAmount> - </amount> - </totalBudget> - <entries> - <id>61561890</id> - <name>Test Adx Campaign</name> - <status>ACTIVE</status> - <conversionOptimizerEligibility> - <eligible>false</eligible> - <rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons> - <rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons> - </conversionOptimizerEligibility> - <campaignStats> - <network>ALL</network> - <Stats.Type>CampaignStats</Stats.Type> - </campaignStats> - <frequencyCap> - <impressions>0</impressions> - </frequencyCap> - </entries> - <entries> - <id>62798730</id> - <name>Interplanetary Cruise #1284660861</name> - <status>PAUSED</status> - <conversionOptimizerEligibility> - <eligible>false</eligible> - <rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons> - <rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons> - <rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons> - </conversionOptimizerEligibility> - <campaignStats> - <network>ALL</network> - <Stats.Type>CampaignStats</Stats.Type> - </campaignStats> - <frequencyCap> - <impressions>0</impressions> - </frequencyCap> - </entries> - <entries> - <id>82779810</id> - <name>Interplanetary Cruise #1302802125300</name> - <status>PAUSED</status> - <conversionOptimizerEligibility> - <eligible>false</eligible> - <rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons> - <rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons> - <rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons> - </conversionOptimizerEligibility> - <campaignStats> - <network>ALL</network> - <Stats.Type>CampaignStats</Stats.Type> - </campaignStats> - <frequencyCap> - <impressions>0</impressions> - </frequencyCap> - </entries> - <entries> - <id>84762330</id> - <name>Interplanetary Cruise #1304540562541</name> - <status>PAUSED</status> - <conversionOptimizerEligibility> - <eligible>false</eligible> - <rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons> - <rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons> - <rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons> - </conversionOptimizerEligibility> - <campaignStats> - <network>ALL</network> - <Stats.Type>CampaignStats</Stats.Type> - </campaignStats> - <frequencyCap> - <impressions>0</impressions> - </frequencyCap> - </entries> - <entries> - <id>84765690</id> - <name>Interplanetary Cruise #367921212517452011</name> - <status>PAUSED</status> - <conversionOptimizerEligibility> - <eligible>false</eligible> - <rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons> - <rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons> - <rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons> - </conversionOptimizerEligibility> - <campaignStats> - <network>ALL</network> - <Stats.Type>CampaignStats</Stats.Type> - </campaignStats> - <frequencyCap> - <impressions>0</impressions> - </frequencyCap> - </entries> - <entries> - <id>84765810</id> - <name>Interplanetary Cruise #396773322517452011</name> - <status>PAUSED</status> - <conversionOptimizerEligibility> - <eligible>false</eligible> - <rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons> - <rejectionReasons>CAMPAIGN_IS_NOT_ACTIVE</rejectionReasons> - <rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons> - </conversionOptimizerEligibility> - <campaignStats> - <network>ALL</network> - <Stats.Type>CampaignStats</Stats.Type> - </campaignStats> - <frequencyCap> - <impressions>0</impressions> - </frequencyCap> - </entries> - <entries> - <id>109690890</id> - <name>RTB Test Campaign</name> - <status>ACTIVE</status> - <conversionOptimizerEligibility> - <eligible>false</eligible> - <rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons> - <rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons> - </conversionOptimizerEligibility> - <campaignStats> - <network>ALL</network> - <Stats.Type>CampaignStats</Stats.Type> - </campaignStats> - <frequencyCap> - <impressions>0</impressions> - </frequencyCap> - </entries> - <entries> - <id>114182850</id> - <name>Campaign #1</name> - <status>ACTIVE</status> - <conversionOptimizerEligibility> - <eligible>false</eligible> - <rejectionReasons>NOT_CPC_CAMPAIGN</rejectionReasons> - <rejectionReasons>CONVERSION_TRACKING_NOT_ENABLED</rejectionReasons> - </conversionOptimizerEligibility> - <campaignStats> - <network>ALL</network> - <Stats.Type>CampaignStats</Stats.Type> - </campaignStats> - <frequencyCap> - <impressions>0</impressions> - </frequencyCap> - </entries> - </rval> - </getResponse> - </soap:Body> -</soap:Envelope> - - - <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><RequestHeader xmlns="https://adwords.google.com/api/adwords/cm/v201409"><KEY1>VALUE1</KEY1><KEY2>VALUE2</KEY2><KEY3>VALUE3</KEY3></RequestHeader></soap:Header><soap:Body><get xmlns="https://adwords.google.com/api/adwords/cm/v201409"><KEY1>VALUE1</KEY1><KEY2>VALUE2</KEY2><KEY3>VALUE3</KEY3></get></soap:Body></soap:Envelope> - - - Resources\secret.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - <?xml version="1.0" encoding="UTF-8"?> - <!DOCTYPE foo [ - <!ELEMENT foo ANY > - <!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]><foo>&xxe;</foo> - - - Resources\utf8bom.xml;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/dfp/tests/Common/Resources/certificate.p12 b/dfp/tests/Common/Resources/certificate.p12 deleted file mode 100755 index 00a13df518bddb5141797d058016946f9e4e1410..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1668 zcmY+DX*Amj7smftL`2aNRBTb{B$$v)65T9C&}xk(N=^Hs8gHU08nLv&R8xCROEH$F zi>j@Nq7|ct!AK-UE!A4uT1vepRYfDWB9p%Ai|3m<5yv!z!>Tfd|3;OM>V@c@S*{-liBenCf3wTM!`dEgra@zyk{i zI2hvpSn(VMMc&l7{4mXo{+wf{WveSm>ksH84uQc?0LlX=cE>E>n;wa`w|tv^_(*O> z{Z8>HhRUwXMja09oXv}UIon_EIdoL?h0)P{4P6NfRwK(EdgwWBB>SDOu4Ne}4G0?8 z&XzULXPD%Mu|8*k+G#(sK@JRAQ; z6x(u7>yH7?^`77jH72Xri=P9;myrWs9e+?Q+~%{nY1FY4u7c27m?_n_5ujFV&YYtE z{&cbsu)EL5 zS=~Dx%nI7G!5ID`WSHz5ZnQ4JJw_!$_u$k$yK7YWA1(bHX6(HUZ&NT~ zO0-kFdcR22*}|MYIsOJHw5t7;Q`+vr7OzG3(`YMu?s4pM{)4&){PtHmwt4*2~TCmZY?c^ z+DZ{GTi8;0fd7Q!yVMJA(^$it45p`Q-MbIQxI6b;r<#FL_5buT3=htJ@65XspSnmq zKrsC~;VMX?ju8?#14II$Kn!pKhyp?YmSWBkO#U%x6Om9&pU|)nG?7I4ZWm>jHOZPx zqA0Sz^0!GDrl`Y=0!@NJfMSjQqk#TZ5ZKp(VB{Z2+!?aG=Sxwi-9} zHe5`@d;g+OsmUaYxH^+hc!8)O(-6t7+|Pw-sb7LMimrEVYhG;`-;|mtbRw6&ax9xl zN$HmeOF~XwI5JMHf_#9Hlels4X#JmC&ARIVcJcHc21Mmsve+^RY5H{#>O$jGJUlgqYX<^5}jNpvhTyN1X~0#0VnXZiz#sb0q}hRIqcwihw_l}U8{@SP?R?%IZb=OpbjTXS zZ*976a5@McnW+U12!$)*Ofy`AZ1d4pVcss~Zm(g4MsY-{>LkU6Jrh20zM* zt|TRbbe3InI*=)OV^1^B-3Bivcp>P&Y!{|~CgjUK#HL95Rvmunx!Yq75D{u{uTpKj zOQzmh{%Lrr&YYJHrF!6SIht0`ZLn(7aDR5O;PZqSM~{nx$H(LujOaq1fdPK>!?kiq zdsC|U+a>?=Ht^;xqQmnOwHNd1y-A;3)!r9v$Xuuaae@DBV5}RSmM9Z!2_^&;n39D$ z1dLJwpvb$@3MuVOsLP7g)z%%gtUi@$>P0BhaV$zm7Z@`i%q)-7e={5j-ZYK;8u32? D2-N83 diff --git a/dfp/tests/Common/Resources/secret.json b/dfp/tests/Common/Resources/secret.json deleted file mode 100755 index e2f41e8393f..00000000000 --- a/dfp/tests/Common/Resources/secret.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "service_account", - "project_id": "project-id-123", - "private_key_id": "654321", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDw6CCpKHEF373IJ6exzsHT1SPaUbSxSEA7iOpMNr45OxaAUfQf8UQKUvUphGIp0qn6cTvMZShqMBzoJw/aFzdmNdlXUnou3L6ay78sqBXiMVVxclDn/sTMyfWIY4w4UwqZGANsbUwkR3A7twAJynsqzgN6YAzfjaO3TdoIDIH9sxARhZVRUYDBY6ul5k/BF+rKsvXZS7MKOUq/uyYyAjPx1xLiybvb09kuVK8m9Hk4RJI+bZKCFadUetb1LFgDn7FiysNYHbsNInctIv075gW/QahIxPyOKUjFU/03nvcIH4kM1NEjlZh7VS/kUHA+CSDN736xcruoepLveyScF5M7AgMBAAECggEBAIe3rla+EtZlUyyEsqOoQGgPppAjAbHya0Ve/+gJ2yaw1B9cjDTGnjdWvwkxrH+1T89opXCj+J3CFzbucq7B75LkeVoJfA4UjEj2ye/ljdaNRn6QEWZxj/tzN6Eru94rYkgXUC5wcLnriR4LHblmWfcmcq0pmXcD+5yT/mYUbdM3Ssr2Ou4gmMlzSx8KfDhS50OFlnlmKC8EZfMp9DlDZwkR/0XAcdktx4VFIOeHOpyZT1K4JBhVTV3Rs35za8AQB7WwoX6OIfI91MXqzlaajVoBlTCYbfPkr/ULqdpgKl1pgvP7YuGcrYKKjUvFPC/b7wsEmSvbEV+RhFSvfTTS1eECgYEA/pNOps+gaNfjBnNf+8FflZNkNVUlm5lRqrhpNUKSskk1tciOjSaZ2qcTND3BOMmTSNeT1M9jYaxPq1ZX1LAo2+pjMtsEwdPjCFzBEM5p0kjpByy2hDvgRQ70kN7HwKZBuPrz4ClSoEO97hlFEne1hdFOZo9wLayqSdbMN63sXasCgYEA8kE9P8DlXEOyIl6a6ZvzKVReLfjYjfxWgmruPQuWzgQ7ROfPpKc1ibcvId0O7o9oCFCP9eZGCewK2aKRaDKtF4JRQeE3VvqVE/9x0iAOmZeYB6pBhrFbIiOxRQTIc8wVw/B4OqtROXgKFKGuWce9f3ebuCVrckdtN5nqUEgQcLECgYAD3HQa75c9P9j/pgxUozAx8pRYgrwZShAFCNr/pczXy2h3I12WInm+6T3PUwh1Ngl31100oxicyKJEtQCMB0f3Xey3Pr8puW7+F3oOKTNNrzFpnHIAO3BBW+K1t8tLzrm8doHwanAIYj6lN9jmWM52AyCvSYmoB7Blgk6Coa6uFQKBgQDCl7r+UhEq2snlJ78h9X4ObdG09dXlv5Mx8XjrGjsJw4ZkZBx780BjHf1DI1GSOSlkvGnXKSCLacqRZS+N1l8JqklhNOqB+Ij1ZlRkaBGyOH4LcixuaFp/AtKrURs/QOke2jOJVQHKuuzGA9WMEpDaKhawhYZYZp2Jcx4vXKOwEQKBgDWGwMGDF1tDMzhmku18vruMXs3aOsdbWsPew4qRXTY+kikipfP87kJMiMg0N7VTLN/LuED1rl5kdLy2YyE63V3NwseXAA35QUR6/vrwDw0utXAxX96XFMUz3BK2WqWi5Bfh0fSg9EV6fKJkvDaksSCbRpvrQGXkdEPgqrVVgGPq\n-----END PRIVATE KEY-----\n", - "client_email": "test@project-id-123.example.com", - "client_id": "123456", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://accounts.google.com/o/oauth2/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test%40project-id-123.example.com" -} diff --git a/dfp/tests/Common/Resources/utf8bom.xml b/dfp/tests/Common/Resources/utf8bom.xml deleted file mode 100755 index 1e2aab17f3b..00000000000 --- a/dfp/tests/Common/Resources/utf8bom.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/dfp/tests/Common/StubIntegrityTestHelper.cs b/dfp/tests/Common/StubIntegrityTestHelper.cs deleted file mode 100755 index 35da0991faf..00000000000 --- a/dfp/tests/Common/StubIntegrityTestHelper.cs +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2016, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Lib; - -using System; -using System.Collections.Generic; -using System.Reflection; - -namespace Google.Api.Ads.Common.Tests { - - /// - /// Utility class that provide functionality to test the integrity of - /// generated stub code for various API services. - /// - public class StubIntegrityTestHelper { - - /// - /// The callback to be called when the method - /// finds a matching service signature. - /// - /// The signature. - public delegate void EnumerateServiceCallback(ServiceSignature signature); - - /// - /// The callback to be called when the method - /// finds a matching service signature. - /// - /// The field name in a hashed format - /// (typename_fieldname). - /// The enum value. - public delegate void EnumerateEnumFieldsCallback(string hashedFieldName, int enumValue); - - /// - /// Enumerates the services supported in a Ads Service. - /// - /// The Ads service being tested - /// (e.g. ) - /// The callback to be called when a matching - /// service is found. - public static void EnumerateServices(EnumerateServiceCallback onServiceFound) - where T : AdsService { - Type serviceType = typeof(T); - - // All the supported service types are defined as nested classes within the - // service type. Each of the nested type has multiple ServiceSignature entries, - // one per supported service. This allows user to create a service like: - // - // var campaignService = user.GetService(AdWordsService.v201607.CampaignService); - Type[] versionTypes = serviceType.GetNestedTypes(); - - foreach (Type versionType in versionTypes) { - FieldInfo[] serviceFields = versionType.GetFields - (BindingFlags.Static | BindingFlags.Public); - foreach (FieldInfo fieldInfo in serviceFields) { - if (fieldInfo.FieldType == typeof(ServiceSignature)) { - ServiceSignature value = (ServiceSignature) fieldInfo.GetValue(null); - onServiceFound(value); - } - } - } - } - - /// - /// Enumerates the enum fields and values under a given root namespace. - /// - /// - /// The root name space. - /// The callback to be called when - /// a matching enumeration field is found. - public static void EnumerateEnumFields(string rootNameSpace, - EnumerateEnumFieldsCallback onEnumFieldDeclarationFound) where T : AdsService { - // Find all supported versions. - Type serviceType = typeof(T); - Type[] versionTypes = serviceType.GetNestedTypes(); - - ISet rootEnums = new HashSet(); - - // Find out the namespace for each supported API version. - foreach (Type versionType in versionTypes) { - string typeName = versionType.Name; - string namespaceName = rootNameSpace + typeName; - rootEnums.Add(namespaceName); - } - - // Enumerate all types in the client library. - foreach (Type declaredType in serviceType.Assembly.GetTypes()) { - // If this is an enumeration within a namespace that corresponds to a - // supported API version then process further. - if (rootEnums.Contains(declaredType.Namespace) && declaredType.IsEnum) { - Array values = declaredType.GetEnumValues(); - - foreach (object value in values) { - string enumName = declaredType.GetEnumName(value); - - // Generate a unique name as EnumTypeName.EnumFieldName. - string hashedName = declaredType.Name + "." + enumName; - int enumValue = (int) value; - - onEnumFieldDeclarationFound(hashedName, enumValue); - } - } - } - } - } -} \ No newline at end of file diff --git a/dfp/tests/Common/TestUtils.cs b/dfp/tests/Common/TestUtils.cs deleted file mode 100755 index 1ccbd8e5146..00000000000 --- a/dfp/tests/Common/TestUtils.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using NUnit.Framework; - -using System; -using System.Collections.Generic; -using System.Text; -using System.Reflection; - -namespace Google.Api.Ads.Common.Tests { - /// - /// Support utility methods for running test cases. - /// - public class TestUtils { - /// - /// Validates whether an ArgumentNullException is called whenever a required - /// property in targetObject is null, and testDelegate is invoked. - /// - /// The target object. - /// The property names to be checked for null - /// values. - /// The test delegate. - public static void ValidateRequiredParameters(object targetObject, string[] propertyNames, - TestDelegate testDelegate) { - foreach (string propertyName in propertyNames) { - PropertyInfo propInfo = targetObject.GetType().GetProperty(propertyName); - object oldValue = propInfo.GetValue(targetObject, null); - if (propInfo.CanWrite) { - propInfo.SetValue(targetObject, null, null); - Assert.Throws(testDelegate); - propInfo.SetValue(targetObject, oldValue, null); - } - } - } - } -} diff --git a/dfp/tests/Common/Util/CollectionUtilitiesTest.cs b/dfp/tests/Common/Util/CollectionUtilitiesTest.cs deleted file mode 100755 index d0c822fefa1..00000000000 --- a/dfp/tests/Common/Util/CollectionUtilitiesTest.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2016, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Collections.Generic; - -namespace Google.Api.Ads.Common.Tests.Util -{ - /// - /// UnitTests for class. - /// - [TestFixture] - public class CollectionUtilitiesTest - { - const long value = long.MinValue; - const string invalidKey = "INVALID_KEY"; - const string validKey = "VALID_KEY"; - - Dictionary dictionary; - - /// - /// Inits this instance. - /// - [SetUp] - public void Init() { - dictionary = new Dictionary() { - {validKey, value} - }; - } - - /// - /// Test for CollectionUtilities.TryGetValue() - /// - [Test] - public void TestTryGetValue() { - // Ensure that requesting an invalid key with no default specified returns the default - // value for that type. - Assert.AreEqual(0L, CollectionUtilities.TryGetValue(dictionary, invalidKey)); - - long validValue = dictionary[validKey]; - - // Ensure requesting a valid key returns the expected value. - Assert.AreEqual(validValue, CollectionUtilities.TryGetValue(dictionary, validKey)); - - // Ensure requesting an invalid key with a default specified returns the specified default. - Assert.AreEqual(validValue, - CollectionUtilities.TryGetValue(dictionary, invalidKey, validValue)); - } - } -} diff --git a/dfp/tests/Common/Util/CsvFileTests.cs b/dfp/tests/Common/Util/CsvFileTests.cs deleted file mode 100755 index 5559a4797b6..00000000000 --- a/dfp/tests/Common/Util/CsvFileTests.cs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2011, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System; -using System.Collections.Generic; -using System.IO; -using System.Xml; - -namespace Google.Api.Ads.Common.Tests.Util { - /// - /// UnitTests for class. - /// - [TestFixture] - public class CsvFileTests { - /// - /// Test for CsvFile.Write() and CsvFile.Read() - /// - [Test] - public void TestCsvReadWrite() { - string fileName = Path.GetTempFileName(); - - CsvFile csvDoc = new CsvFile(); - csvDoc.Headers.AddRange(new string[] {"item1", "item2"}); - csvDoc.Records.Add(new string[] {"a", "1"}); - csvDoc.Records.Add(new string[] {"b,c", "2"}); - csvDoc.Records.Add(new string[] {"\"d\", \"e\"", "3"}); - Assert.DoesNotThrow( - delegate() { - csvDoc.Write(fileName); - }, - "CsvFile.Write() should not throw an exception."); - - // Downloaded report should be a valid csv. - csvDoc = new CsvFile(); - Assert.DoesNotThrow( - delegate() { - csvDoc.Read(fileName, true); - }, - "CsvFile should not throw an exception."); - - Assert.AreEqual(csvDoc.Headers.Count, 2); - Assert.AreEqual(csvDoc.Headers[0], "item1"); - Assert.AreEqual(csvDoc.Headers[1], "item2"); - - Assert.AreEqual(csvDoc.Records.Count, 3); - - Assert.AreEqual(csvDoc.Records[0][0], "a"); - Assert.AreEqual(csvDoc.Records[0][1], "1"); - Assert.AreEqual(csvDoc.Records[1][0], "b,c"); - Assert.AreEqual(csvDoc.Records[1][1], "2"); - Assert.AreEqual(csvDoc.Records[2][0], "\"d\", \"e\""); - Assert.AreEqual(csvDoc.Records[2][1], "3"); - } - } -} diff --git a/dfp/tests/Common/Util/DeprecationUtilitiesTest.cs b/dfp/tests/Common/Util/DeprecationUtilitiesTest.cs deleted file mode 100755 index 058368de957..00000000000 --- a/dfp/tests/Common/Util/DeprecationUtilitiesTest.cs +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; -using NUnit.Framework; - -using System; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Text; - -namespace Google.Api.Ads.Common.Tests.Util { - - /// - /// Tests for DeprecationUtilities class. - /// - [TestFixture] - public class DeprecationUtilitiesTest { - private const string DEPRECATION_MESSAGE = "This is a deprecation message."; - -#pragma warning disable 414 - - [Obsolete(DEPRECATION_MESSAGE)] - private string deprecatedField = ""; - - private string nonDeprecatedField = ""; -#pragma warning restore 414 - - private MemberInfo deprecatedMemberInfo; - private MemberInfo nonDeprecatedMemberInfo; - private MemoryStream memStream; - - /// - /// Inits this instance. - /// - [SetUp] - public void Init() { - memStream = new MemoryStream(); - TextWriterTraceListener textListener = new TextWriterTraceListener(memStream); - TraceSource traceSource = TraceUtilities.GetSource( - TraceUtilities.DEPRECATION_MESSAGES_SOURCE); - - // Set the switch level to log all warnings. Setting this key is required - // for the tests to pass, since this key usually comes from - // App.config, but would be unset when running the test standalone since - // Common lib doesn't have its own App.config. - traceSource.Switch.Level = SourceLevels.All; - traceSource.Listeners.Add(textListener); - - deprecatedMemberInfo = this.GetType().GetField("deprecatedField", - BindingFlags.NonPublic | BindingFlags.Instance); - nonDeprecatedMemberInfo = this.GetType().GetField("nonDeprecatedField", - BindingFlags.NonPublic | BindingFlags.Instance); - } - - /// - /// Tests if deprecation methods are displayed for deprecated fields. - /// - [Test] - public void TestShowsDeprecationForDeprecatedField() { - DeprecationUtilities.ShowDeprecationMessage(deprecatedMemberInfo); - String traceContents = Encoding.UTF8.GetString(memStream.ToArray()); - if (!traceContents.Contains(DEPRECATION_MESSAGE)) { - Assert.Fail("Deprecation message is missing in trace logs."); - } - } - - /// - /// Tests if deprecation methods not displayed for non-deprecated fields. - /// - [Test] - public void TestDoesNotShowDeprecationForNonDeprecatedField() { - DeprecationUtilities.ShowDeprecationMessage(nonDeprecatedMemberInfo); - String traceContents = Encoding.UTF8.GetString(memStream.ToArray()); - if (traceContents.Contains(DEPRECATION_MESSAGE)) { - Assert.Fail("Deprecation message is present in trace logs."); - } - } - } -} diff --git a/dfp/tests/Common/Util/MediaUtilitiesTests.cs b/dfp/tests/Common/Util/MediaUtilitiesTests.cs deleted file mode 100755 index 9873673c495..00000000000 --- a/dfp/tests/Common/Util/MediaUtilitiesTests.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System; -using System.Collections.Generic; -using System.IO; -using System.Xml; -using System.Text; -using System.IO.Compression; - -namespace Google.Api.Ads.Common.Tests.Util { - /// - /// UnitTests for class. - /// - [TestFixture] - public class MediaUtilitiesTests { - const string FILE_CONTENTS = "Hello world"; - - Uri fileUri = null; - byte[] compressedData; - MemoryStream sourceStream; - MemoryStream targetStream; - - /// - /// Inits this instance. - /// - [SetUp] - public void Init() { - String fileName = Path.GetTempFileName(); - using (StreamWriter writer = new StreamWriter(fileName)) { - writer.Write(FILE_CONTENTS); - } - fileUri = new Uri(fileName); - - MemoryStream dataStream = new MemoryStream(); - byte[] data = Encoding.UTF8.GetBytes(FILE_CONTENTS); - using (GZipStream gzipStream = new GZipStream(dataStream, CompressionMode.Compress)) { - gzipStream.Write(data, 0, data.Length); - } - compressedData = dataStream.ToArray(); - - sourceStream = new MemoryStream(); - targetStream = new MemoryStream(); - sourceStream.Write(data, 0, data.Length); - sourceStream.Seek(0, SeekOrigin.Begin); - } - - /// - /// Tears down this instance. - /// - [TearDown] - public void Teardown() { - sourceStream.Close(); - targetStream.Close(); - } - - - /// - /// Tests if data can be retrieved from a url. - /// - [Test] - [Category("Small")] - public void TestGetAssetDataFromUrl1() { - byte[] data = MediaUtilities.GetAssetDataFromUrl(fileUri); - Assert.AreEqual(FILE_CONTENTS, Encoding.UTF8.GetString(data)); - } - - /// - /// Tests if data can be retrieved from a url. - /// - [Test] - [Category("Small")] - public void TestGetAssetDataFromUrl2() { - byte[] data = MediaUtilities.GetAssetDataFromUrl(fileUri.AbsoluteUri); - Assert.AreEqual(FILE_CONTENTS, Encoding.UTF8.GetString(data)); - } - - /// - /// Tests if data can be deflated properly. - /// - [Test] - [Category("Small")] - public void TestDeflateGZipData() { - byte[] deflatedData = MediaUtilities.DeflateGZipData(compressedData); - Assert.AreEqual(FILE_CONTENTS, Encoding.UTF8.GetString(deflatedData)); - } - - /// - /// Tests if data can be copied from one stream to another correctly. - /// - [Test] - [Category("Small")] - public void TestCopyStream() { - MediaUtilities.CopyStream(sourceStream, targetStream); - Assert.AreEqual(FILE_CONTENTS, Encoding.UTF8.GetString(sourceStream.ToArray())); - } - - /// - /// Tests if data can be copied from one stream to another correctly with - /// preview. - /// - [Test] - [Category("Small")] - public void TestCopyStreamWithPreview() { - byte[] preview = MediaUtilities.CopyStreamWithPreview(sourceStream, targetStream, 5); - Assert.AreEqual(FILE_CONTENTS.Substring(0, 5), Encoding.UTF8.GetString(preview)); - Assert.AreEqual(FILE_CONTENTS, Encoding.UTF8.GetString(sourceStream.ToArray())); - } - - /// - /// Tests if data can be read from a stream as string. - /// preview. - /// - [Test] - [Category("Small")] - public void TestGetStreamContentsAsString() { - string contents = MediaUtilities.GetStreamContentsAsString(sourceStream); - Assert.AreEqual(FILE_CONTENTS, contents); - } - } -} diff --git a/dfp/tests/Common/Util/Reports/ReportResponseTests.cs b/dfp/tests/Common/Util/Reports/ReportResponseTests.cs deleted file mode 100755 index 7a4ffb11944..00000000000 --- a/dfp/tests/Common/Util/Reports/ReportResponseTests.cs +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2014, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System; -using System.IO; -using System.Text; -using System.Net; -using Google.Api.Ads.Common.Util.Reports; -using System.Threading; - -namespace Google.Api.Ads.Common.Tests.Util { - /// - /// UnitTests for class. - /// - [TestFixture] - public class ReportResponseTests { - const string FILE_CONTENTS = "Hello world"; - - Uri fileUri = null; - WebResponse webResponse = null; - - /// - /// Inits this instance. - /// - [SetUp] - public void Init() { - String fileName = Path.GetTempFileName(); - using (StreamWriter writer = new StreamWriter(fileName)) { - writer.Write(FILE_CONTENTS); - } - fileUri = new Uri(fileName); - - webResponse = FileWebRequest.Create(fileUri.AbsoluteUri).GetResponse(); - } - - /// - /// Tears down this instance. - /// - [TearDown] - public void Teardown() { - webResponse.Close(); - } - - - /// - /// Tests if report response can be retrieved as a stream. - /// - [Test] - [Category("Small")] - public void TestGetStream() { - ReportResponse response = new ReportResponse(webResponse); - - using (MemoryStream stream = new MemoryStream()) - using (StreamWriter writer = new StreamWriter(stream)) { - writer.Write(FILE_CONTENTS); - writer.Flush(); - stream.Position = 0; - - FileAssert.AreEqual(stream, response.Stream, "Streams do not match"); - } - } - - /// - /// Tests if report response can be downloaded synchronously. - /// - [Test] - [Category("Small")] - public void TestDownload() { - ReportResponse response = new ReportResponse(webResponse); - this.AssertContentsAreEqual(response.Download()); - } - - /// - /// Tests if report response can be downloaded asynchronously. - /// - [Test] - [Category("Small")] - public void TestDownloadAsync() { - Boolean success = false; - ManualResetEvent waiter = new ManualResetEvent(false); - ReportResponse response = new ReportResponse(webResponse); - - byte[] contents = null; - response.OnDownloadSuccess = ret => { - contents = ret; - success = true; - waiter.Set(); - }; - - response.OnFailed = e => waiter.Set(); - - response.DownloadAsync(); - waiter.WaitOne(); - - Assert.IsTrue(success, "DownloadAsync triggered OnFailed"); - this.AssertContentsAreEqual(contents); - } - - /// - /// Tests if report response can be saved to file synchronously. - /// - [Test] - [Category("Small")] - public void TestSave() { - ReportResponse response = new ReportResponse(webResponse); - - String fileName = Path.GetTempFileName(); - response.Save(fileName); - - this.AssertSaveWasSuccessful(fileName, response); - } - - /// - /// Tests if report response can be downloaded asynchronously. - /// - [Test] - [Category("Small")] - public void TestSaveAsync() { - Boolean success = false; - ManualResetEvent waiter = new ManualResetEvent(false); - ReportResponse response = new ReportResponse(webResponse); - - response.OnSaveSuccess = () => { - success = true; - waiter.Set(); - }; - - response.OnFailed = e => waiter.Set(); - - String fileName = Path.GetTempFileName(); - response.SaveAsync(fileName); - waiter.WaitOne(); - - Assert.IsTrue(success, "SaveAsync triggered OnFailed."); - this.AssertSaveWasSuccessful(fileName, response); - } - - private void AssertContentsAreEqual(byte[] contents) { - Assert.IsNotNull(contents); - Assert.AreEqual(Encoding.UTF8.GetBytes(FILE_CONTENTS), contents, "Byte arrays do not match"); - } - - private void AssertSaveWasSuccessful(string fileName, ReportResponse response) { - Assert.AreEqual(fileName, response.Path); - using (StreamReader reader = new StreamReader(fileName)) { - Assert.AreEqual(FILE_CONTENTS, reader.ReadToEnd(), "File contents do not match"); - } - } - } -} diff --git a/dfp/tests/Common/Util/TemporaryIdGeneratorTests.cs b/dfp/tests/Common/Util/TemporaryIdGeneratorTests.cs deleted file mode 100755 index 4d3635e81d4..00000000000 --- a/dfp/tests/Common/Util/TemporaryIdGeneratorTests.cs +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System; - -namespace Google.Api.Ads.Common.Tests.Util { - - /// - /// Tests for class. - /// - [TestFixture] - internal class TemporaryIdGeneratorTests { - - /// - /// Tests the Next method with default values. - /// - [Test] - [Category("Small")] - public void TestNextWithDefaultValues() { - TemporaryIdGenerator generator = new TemporaryIdGenerator(); - Assert.That(generator.Next == Int32.MinValue); - Assert.That(generator.Next == Int32.MinValue + 1); - } - - /// - /// Tests the Next method when a start ID is provided. - /// - [Test] - [Category("Small")] - public void TestNextWithStartId() { - int startId = -20; - TemporaryIdGenerator generator = new TemporaryIdGenerator(startId); - - Assert.That(generator.Next == startId); - Assert.That(generator.Next == startId + 1); - } - - /// - /// Tests that an exception is thrown when a positive start ID is provided. - /// - [Test] - [Category("Small")] - public void TestThrowsExceptionWithPositiveStartId() { - int startId = 20; - Assert.Throws(delegate() { - TemporaryIdGenerator generator = new TemporaryIdGenerator(startId); - }); - - startId = 0; - Assert.Throws(delegate() { - TemporaryIdGenerator generator = new TemporaryIdGenerator(startId); - }); - } - - /// - /// Tests that an exception is thrown if a positive number gets generated. - /// - [Test] - [Category("Small")] - public void TestDoesNotGeneratePositiveId() { - int startId = -1; - TemporaryIdGenerator generator = new TemporaryIdGenerator(startId); - Assert.Throws(delegate() { - long next = generator.Next; - }); - } - } -} diff --git a/dfp/tests/Common/Util/TraceUtilitiesTest.cs b/dfp/tests/Common/Util/TraceUtilitiesTest.cs deleted file mode 100755 index 2ec54e08ead..00000000000 --- a/dfp/tests/Common/Util/TraceUtilitiesTest.cs +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2017, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Diagnostics; -using System.IO; -using System.Text; - -namespace Google.Api.Ads.Common.Tests.Util { - /// - /// UnitTests for class. - /// - [TestFixture] - public class TraceUtilitiesTest { - /// - /// A test log message that is guaranteed to not contain any value that would cause false - /// positives when testing. - /// - private const string TEST_LOG_MESSAGE = "test log message"; - - private const string ERROR_MARKER = "Error: 1"; - private const string INFO_MARKER = "Information: 1"; - private const string WARNING_MARKER = "Warning: 1"; - private const string VERBOSE_MARKER = "Verbose: 1"; - - /// - /// Tests that deprecation warnings are written to the correct logs source at the expected log - /// level. - /// - [Test] - [Category("Small")] - public void WriteDeprecationWarnings() { - using (var stream = new MemoryStream()) { - enableLoggingToMemoryStream(TraceUtilities.DEPRECATION_MESSAGES_SOURCE, stream); - - // Ensure deprecation warnings are logged at the warning level. - TraceUtilities.WriteDeprecationWarnings(TEST_LOG_MESSAGE); - StringAssert.Contains(WARNING_MARKER, getLogFromMemoryStream(stream)); - } - } - - /// - /// Tests that general warnings are written to the correct logs source at the expected log - /// level. - /// - [Test] - [Category("Small")] - public void WriteGeneralWarnings() { - using (var stream = new MemoryStream()) { - enableLoggingToMemoryStream(TraceUtilities.GENERAL_WARNING_MESSAGES_SOURCE, stream); - - // Ensure general warnings are logged at the warning level. - TraceUtilities.WriteGeneralWarnings(TEST_LOG_MESSAGE); - StringAssert.Contains(WARNING_MARKER, getLogFromMemoryStream(stream)); - } - } - - /// - /// Tests that general errors are written to the correct logs source at the expected log - /// level. - /// - [Test] - [Category("Small")] - public void WriteGeneralErrors() { - using (var stream = new MemoryStream()) { - enableLoggingToMemoryStream(TraceUtilities.GENERAL_WARNING_MESSAGES_SOURCE, stream); - - // Ensure general errors are logged at the error level. - TraceUtilities.WriteGeneralErrors(TEST_LOG_MESSAGE); - StringAssert.Contains(ERROR_MARKER, getLogFromMemoryStream(stream)); - } - } - - /// - /// Tests that summary success logs are written to the correct logs source at the expected log - /// level. - /// - [Test] - [Category("Small")] - public void TestWriteSummaryRequestLogsSuccess() { - using (var stream = new MemoryStream()) { - enableLoggingToMemoryStream(TraceUtilities.SUMMARY_REQUEST_LOGS_SOURCE, stream); - - // Ensure success summaries are logged at the info level. - TraceUtilities.WriteSummaryRequestLogs(TEST_LOG_MESSAGE, false); - StringAssert.Contains(INFO_MARKER, getLogFromMemoryStream(stream)); - } - } - - /// - /// Tests that summary failure logs are written to the correct logs source at the expected log - /// level. - /// - [Test] - [Category("Small")] - public void TestWriteSummaryRequestLogsFailure() { - using (var stream = new MemoryStream()) { - enableLoggingToMemoryStream(TraceUtilities.SUMMARY_REQUEST_LOGS_SOURCE, stream); - - // Ensure failure summaries are logged at the warning level. - TraceUtilities.WriteSummaryRequestLogs(TEST_LOG_MESSAGE, true); - StringAssert.Contains(WARNING_MARKER, getLogFromMemoryStream(stream)); - } - } - - /// - /// Tests that detailed success logs are written to the correct logs source at the expected log - /// level. - /// - [Test] - [Category("Small")] - public void TestWriteDetailedRequestLogsSuccess() { - using (var stream = new MemoryStream()) { - enableLoggingToMemoryStream(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE, stream); - - // Ensure success details are logged at the verbose level. - TraceUtilities.WriteDetailedRequestLogs(TEST_LOG_MESSAGE, false); - StringAssert.Contains(VERBOSE_MARKER, getLogFromMemoryStream(stream)); - } - } - - /// - /// Tests that detailed failure logs are written to the correct logs source at the expected log - /// level. - /// - [Test] - [Category("Small")] - public void TestWriteDetailedRequestLogsFailure() { - using (var stream = new MemoryStream()) { - enableLoggingToMemoryStream(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE, stream); - - // Ensure failure details are logged at the warning level. - TraceUtilities.WriteDetailedRequestLogs(TEST_LOG_MESSAGE, true); - StringAssert.Contains(INFO_MARKER, getLogFromMemoryStream(stream)); - } - } - - private void enableLoggingToMemoryStream(string logSourceName, MemoryStream stream) { - TraceSource source = TraceUtilities.GetSource(logSourceName); - source.Switch.Level = SourceLevels.All; - source.Listeners.Add(new TextWriterTraceListener(stream) { - Filter = new EventTypeFilter(SourceLevels.All) - }); - } - - private string getLogFromMemoryStream(MemoryStream stream) { - stream.Position = 0; - return Encoding.UTF8.GetString(stream.ToArray()); - } - } -} - diff --git a/dfp/tests/Common/Util/XmlUtilitiesTest.cs b/dfp/tests/Common/Util/XmlUtilitiesTest.cs deleted file mode 100755 index c1102cf8dc1..00000000000 --- a/dfp/tests/Common/Util/XmlUtilitiesTest.cs +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2016, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using Google.Api.Ads.Common.Util; - -using NUnit.Framework; - -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Xml; - -namespace Google.Api.Ads.Common.Tests.Util { - /// - /// UnitTests for class. - /// - [TestFixture] - public class XmlUtilitiesTest { - - /// - /// Inits this instance. - /// - [SetUp] - public void Init() { - } - - /// - /// Tests that XmlDocument created with XmlUtililites doesn't resolve - /// External Xml Entities. - /// - [Test] - [Category("Small")] - public void TestNoXxeTranslation() { - Assert.Throws(delegate() { - XmlDocument xDoc = XmlUtilities.CreateDocument(Resources.XxeExample); - }); - } - - /// - /// Tests that XmlDocument created with XmlUtililites can load an XML with - /// UTF-8 BOM mark from a byte array or string. - /// - [Test] - [Category("Small")] - public void TestCanLoadXmlFromDiskWithUtf8BomInMemory() { - Assert.DoesNotThrow(delegate() { - XmlUtilities.CreateDocument(Encoding.UTF8.GetString(Resources.Utf8Bom)); - XmlUtilities.CreateDocument(Resources.Utf8Bom); - }); - } - - /// - /// Tests that XmlDocument created with XmlUtililites can load an XML with - /// UTF-8 BOM mark from a file. - /// - [Test] - [Category("Small")] - public void TestCanLoadXmlFromDiskWithUtf8Bom() { - string path = Path.GetTempFileName(); - using (FileStream fs = File.Create(path)) { - fs.Write(Resources.Utf8Bom, 0, Resources.Utf8Bom.Length); - } - using (FileStream fs = File.OpenRead(path)) { - Assert.DoesNotThrow(delegate() { - XmlUtilities.CreateDocument(fs); - }); - } - } - } -} - diff --git a/dfp/tests/Common/WebRequestInterceptor.cs b/dfp/tests/Common/WebRequestInterceptor.cs deleted file mode 100755 index 54806c7e057..00000000000 --- a/dfp/tests/Common/WebRequestInterceptor.cs +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2012, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -using System; -using System.Collections.Generic; -using System.Net; -using System.Reflection; -using System.Text; - -namespace Google.Api.Ads.Common.Tests { - /// - /// Intercepts a web request for testing purposes. - /// - public abstract class WebRequestInterceptor : IWebRequestCreate { - /// - /// Callback delegate for listening to outgoing requests. - /// - /// The URI to which calls are being made. - /// The HTTP request headers. - /// The HTTP request body. - public delegate void OnBeforeSendResponse(Uri uri, WebHeaderCollection headers, String body); - - /// - /// Callback for listening to outgoing request. - /// - private OnBeforeSendResponse beforeSendResponse = OnBeforeSendResponseCallback; - - /// - /// True, to intercept a request, false to bypass the request. - /// - bool intercept; - - /// - /// If set to true, then the interceptor will return an error code rather - /// than a successful response. - /// - private bool raiseException; - - /// - /// Gets or sets a value indicating whether this handler should intercept - /// a request or not. - /// - public bool Intercept { - get { - return intercept; - } - set { - intercept = value; - } - } - - /// - /// Gets or sets a value indicating whether to return an error code rather - /// than a successful response. - /// - public bool RaiseException { - get { - return raiseException; - } - set { - raiseException = value; - } - } - - /// - /// Gets or sets the beforeSendResponse callback. - /// - public OnBeforeSendResponse BeforeSendResponse { - get { - return beforeSendResponse; - } - set { - beforeSendResponse = value; - } - } - - /// - /// Default handler for OnBeforeSendResponse. - /// - /// The URI to which calls are being made. - /// The HTTP request headers. - /// The HTTP request body. - static void OnBeforeSendResponseCallback(Uri uri, WebHeaderCollection headers, string body) { - } - - /// - /// Gets the next message to be mocked. - /// - /// An HttpMessage object that represents the next message. - public abstract HttpMessage GetNextMessage(); - - /// - /// Gets the default HTTP handler. - /// - /// The uri to handler. - /// The web request handler. - /// This is a slightly hacky method to get the default handler. - /// We are using reflection to call the internal constructor of - /// HttpWebRequest, since WebRequest.RegisterPrefix neither allows us to - /// unregister the handler for a prefix, nor gives us back the old prefix. - /// - protected static WebRequest GetDefaultHttpHandler(Uri uri) { - ConstructorInfo ci = typeof(HttpWebRequest).GetConstructor(BindingFlags.NonPublic | - BindingFlags.Instance, null, new Type[] {typeof(Uri), typeof(ServicePoint)}, null); - return (HttpWebRequest) ci.Invoke(new object[] {uri, null}); - } - - /// - /// Creates a instance. - /// - /// The uniform resource identifier (URI) of the Web - /// resource. - /// - /// A instance. - /// - public WebRequest Create(Uri uri) { - if (Intercept) { - HttpMessage message = GetNextMessage(); - MockWebResponse response = new MockWebResponse(message.Response, message.ResponseType); - return new MockWebRequest(response, uri, beforeSendResponse, RaiseException); - } else { - return GetDefaultHttpHandler(uri); - } - } - } -} diff --git a/dfp/utilities/OAuthTokenGenerator/LocalWebServer.cs b/dfp/utilities/OAuthTokenGenerator/LocalWebServer.cs deleted file mode 100755 index 3dad74a6d1e..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/LocalWebServer.cs +++ /dev/null @@ -1,218 +0,0 @@ -// Copyright 2016, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Diagnostics; -using System.IO; -using System.Net; -using System.Threading; -using Google.Api.Ads.Common.Lib; - -namespace Google.Api.Ads.Common.Utilities.OAuthTokenGenerator { - - /// - /// A local web server that listens and handles OAuth2 callback requests. - /// - public class LocalWebServer { - - /// - /// Callback to be triggered when a refresh token is retrieved successfully. - /// - /// The OAuth2 client ID. - /// The OAuth2 client secret. - /// The OAuth2 refresh token. - public delegate void OnSuccessCallback(string clientId, string clientSecret, - string refreshToken); - - /// - /// Callback to be triggered when a refresh token could not be retrieved. - /// - /// The error message from the server. - public delegate void OnFailedCallback(string message); - - /// - /// Callback to be triggered when a refresh token is retrieved successfully. - /// - private OnSuccessCallback onSuccess; - - /// - /// Callback to be triggered when a refresh token could not be retrieved. - /// - private OnFailedCallback onFailed; - - /// - /// Gets or sets the callback to be triggered when a refresh token is - /// retrieved successfully. - /// - public OnSuccessCallback OnSuccess { - get { - return onSuccess; - } - set { - onSuccess = value; - } - } - - /// - /// Gets or sets the callback to be triggered when a refresh token could - /// not be retrieved. - /// - public OnFailedCallback OnFailed { - get { - return onFailed; - } - set { - onFailed = value; - } - } - - /// - /// The application configuration instance. - /// - private AppConfig appConfig = new AppConfigBase(); - - /// - /// The address of the local server that receives the OAuth2 callback. - /// - private string LOCALHOST_ADDRESS = "http://localhost:8080/"; - - /// - /// The HTTP listener that runs the local server. - /// - private HttpListener newHttpListener; - - /// - /// The OAuth2 provider for doing OAuth2 installed application flow. - /// - private OAuth2ProviderForApplications oAuth2; - - /// - /// The server thread to listen to incoming web requests and handle them, - /// so that the main UI thread isn't blocked. - /// - private Thread serverThread; - - /// - /// Initializes a new instance of the class. - /// - public LocalWebServer() { - } - - /// - /// Triggers the authentication flow. - /// - /// The OAuth2 client identifier. - /// The OAuth2 client secret. - /// The OAuth2 scope. - public void TriggerAuthFlow(string clientId, string clientSecret, string scope) { - appConfig.OAuth2RedirectUri = LOCALHOST_ADDRESS; - appConfig.OAuth2ClientId = clientId; - appConfig.OAuth2ClientSecret = clientSecret; - appConfig.OAuth2Scope = scope; - - oAuth2 = new OAuth2ProviderForApplications(appConfig); - - // Get the authorization url and open a browser. - string authorizationUrl = oAuth2.GetAuthorizationUrl(); - Process.Start(authorizationUrl); - } - - /// - /// Starts the local server. - /// - public void Start() { - // Start the server on localhost. - newHttpListener = new System.Net.HttpListener(); - newHttpListener.Prefixes.Add(LOCALHOST_ADDRESS); - newHttpListener.Start(); - - // Start the listener. - serverThread = new Thread(delegate() { - while (true) { - try { - HttpListenerContext ctx = newHttpListener.GetContext(); - HandlePageRequest(ctx); - } catch (HttpListenerException) { - break; - } - } - }); - serverThread.Start(); - } - - /// - /// Stops the local server. - /// - public void Stop() { - newHttpListener.Stop(); - serverThread.Join(); - } - - /// - /// Handles the page request. - /// - /// The listener context. - private void HandlePageRequest(HttpListenerContext context) { - HttpListenerResponse response = context.Response; - - // If the request is for /, then send back a blank text. - if (context.Request.Url.LocalPath == "/") { - bool result = HandleOAuth2Callback(context); - response.ContentType = "text/plain"; - - using (StreamWriter textWriter = new StreamWriter(response.OutputStream)) { - if (result) { - textWriter.Write("You have authorized successfully. You can close this window " + - "and return to the main application to complete the process and copy your " + - "credentials.\r\n"); - } else { - textWriter.Write("OAuth2 authorization failed. Please close this window " + - "and return to the main application to see the errors and fix them.\r\n"); - } - } - - response.StatusCode = (int) HttpStatusCode.OK; - response.StatusDescription = "OK"; - } else { - // Send 404 for anything else. - response.StatusCode = (int) HttpStatusCode.NotFound; - response.StatusDescription = "NotFound"; - } - response.OutputStream.Close(); - } - - /// - /// Handles the OAuth2 callback. - /// - /// The web request context. - private bool HandleOAuth2Callback(HttpListenerContext context) { - string url = context.Request.Url.OriginalString; - string authorizationCode = context.Request.QueryString["code"]; - - try { - oAuth2.FetchAccessAndRefreshTokens(authorizationCode); - - if (onSuccess != null) { - onSuccess(appConfig.OAuth2ClientId, appConfig.OAuth2ClientSecret, - appConfig.OAuth2RefreshToken); - } - return true; - } catch (AdsOAuthException e) { - if (onFailed != null) { - onFailed(e.Message); - } - return false; - } - } - } -} diff --git a/dfp/utilities/OAuthTokenGenerator/MainForm.Designer.cs b/dfp/utilities/OAuthTokenGenerator/MainForm.Designer.cs deleted file mode 100755 index 9d2a5a16037..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/MainForm.Designer.cs +++ /dev/null @@ -1,193 +0,0 @@ -namespace Google.Api.Ads.Common.Utilities.OAuthTokenGenerator { - partial class MainForm { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) { - if (disposing && (components != null)) { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - this.panel1 = new System.Windows.Forms.Panel(); - this.txtExtraScopes = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.txtClientID = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.txtClientSecret = new System.Windows.Forms.TextBox(); - this.chkScopes = new System.Windows.Forms.CheckedListBox(); - this.label3 = new System.Windows.Forms.Label(); - this.btnOK = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.panel1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - this.panel1.Controls.Add(this.txtExtraScopes); - this.panel1.Controls.Add(this.label4); - this.panel1.Controls.Add(this.label1); - this.panel1.Controls.Add(this.txtClientID); - this.panel1.Controls.Add(this.label2); - this.panel1.Controls.Add(this.txtClientSecret); - this.panel1.Controls.Add(this.chkScopes); - this.panel1.Controls.Add(this.label3); - this.panel1.Location = new System.Drawing.Point(12, 108); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(493, 226); - this.panel1.TabIndex = 11; - // - // txtExtraScopes - // - this.txtExtraScopes.Location = new System.Drawing.Point(141, 119); - this.txtExtraScopes.Multiline = true; - this.txtExtraScopes.Name = "txtExtraScopes"; - this.txtExtraScopes.Size = new System.Drawing.Size(349, 98); - this.txtExtraScopes.TabIndex = 7; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(3, 119); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(90, 26); - this.label4.TabIndex = 6; - this.label4.Text = "Addtional Scopes\r\n(One per line)"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(3, 10); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(47, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Client ID"; - // - // txtClientID - // - this.txtClientID.Location = new System.Drawing.Point(141, 10); - this.txtClientID.Name = "txtClientID"; - this.txtClientID.Size = new System.Drawing.Size(349, 20); - this.txtClientID.TabIndex = 1; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(3, 36); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(67, 13); - this.label2.TabIndex = 2; - this.label2.Text = "Client Secret"; - // - // txtClientSecret - // - this.txtClientSecret.Location = new System.Drawing.Point(141, 36); - this.txtClientSecret.Name = "txtClientSecret"; - this.txtClientSecret.Size = new System.Drawing.Size(349, 20); - this.txtClientSecret.TabIndex = 3; - // - // chkScopes - // - this.chkScopes.FormattingEnabled = true; - this.chkScopes.Location = new System.Drawing.Point(141, 62); - this.chkScopes.Name = "chkScopes"; - this.chkScopes.Size = new System.Drawing.Size(349, 49); - this.chkScopes.TabIndex = 4; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(3, 62); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(77, 13); - this.label3.TabIndex = 5; - this.label3.Text = "OAuth2 Scope"; - // - // btnOK - // - this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOK.Location = new System.Drawing.Point(351, 340); - this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(75, 23); - this.btnOK.TabIndex = 12; - this.btnOK.Text = "OK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOk_Click); - // - // btnCancel - // - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(432, 340); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 13; - this.btnCancel.Text = "Close"; - this.btnCancel.UseVisualStyleBackColor = true; - this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); - // - // textBox1 - // - this.textBox1.Location = new System.Drawing.Point(11, 12); - this.textBox1.Multiline = true; - this.textBox1.Name = "textBox1"; - this.textBox1.ReadOnly = true; - this.textBox1.Size = new System.Drawing.Size(494, 90); - this.textBox1.TabIndex = 15; - this.textBox1.Text = resources.GetString("textBox1.Text"); - // - // MainForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(517, 375); - this.Controls.Add(this.textBox1); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOK); - this.Controls.Add(this.panel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.MaximizeBox = false; - this.Name = "MainForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "OAuth2 Token Generator"; - this.TopMost = true; - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox txtClientID; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox txtClientSecret; - private System.Windows.Forms.CheckedListBox chkScopes; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.TextBox textBox1; - private System.Windows.Forms.TextBox txtExtraScopes; - private System.Windows.Forms.Label label4; - } -} - diff --git a/dfp/utilities/OAuthTokenGenerator/MainForm.cs b/dfp/utilities/OAuthTokenGenerator/MainForm.cs deleted file mode 100755 index 47ff9898e71..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/MainForm.cs +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace Google.Api.Ads.Common.Utilities.OAuthTokenGenerator { - - /// - /// Main application form. - /// - public partial class MainForm : Form { - - /// - /// The dictionary to maintain a map between the API name, and the - /// corrsponding OAuth2 scope. - /// - private Dictionary scopeMap = new Dictionary(); - - /// - /// The Application configuration patch to be displayed to the user. - /// - private const string APP_CONFIG_PATCH = @" - - - - -"; - - /// - /// The web server that handles the OAuth2 callback. - /// - private readonly LocalWebServer webServer; - - /// - /// Initializes a new instance of the class. - /// - public MainForm() { - InitializeComponent(); - - webServer = new LocalWebServer(); - webServer.Start(); - webServer.OnSuccess += delegate(string clientId, string clientSecret, string refreshToken) { - // Use the Invoke method so that the caller thread doesn't block, and - // control switches to the UI thread. - this.Invoke(new MethodInvoker(delegate() { - string configText = string.Format(APP_CONFIG_PATCH, clientId, clientSecret, refreshToken); - ResultDialog dialog = new ResultDialog(configText); - dialog.Owner = this; - dialog.Show(); - })); - }; - - webServer.OnFailed += delegate(string errorMessage) { - // Use the Invoke method so that the caller thread doesn't block, and - // control switches to the UI thread. - this.Invoke(new MethodInvoker(delegate() { - MessageBox.Show(this, errorMessage + "\r\n Fix the errors and try again.", - this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); - })); - }; - - scopeMap.Add("AdWords API", "https://www.googleapis.com/auth/adwords"); - scopeMap.Add("Doubleclick for Publishers API", "https://www.googleapis.com/auth/dfp"); - - foreach (string key in scopeMap.Keys) { - chkScopes.Items.Add(key); - } - } - - /// - /// Handles the Click event of the btnOk control. - /// - /// The source of the event. - /// The instance containing the - /// event data. - private void btnOk_Click(object sender, EventArgs e) { - string clientId = txtClientID.Text.Trim(); - if (string.IsNullOrEmpty(clientId)) { - MessageBox.Show(this, "Client ID cannot be empty.", this.Text, MessageBoxButtons.OK, - MessageBoxIcon.Information); - return; - } - - string clientSecret = txtClientSecret.Text.Trim(); - if (string.IsNullOrEmpty(clientSecret)) { - MessageBox.Show(this, "Client Secret cannot be empty.", this.Text, - MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - - List allScopes = new List(); - for (int i = 0; i < chkScopes.SelectedItems.Count; i++) { - allScopes.Add(scopeMap[chkScopes.SelectedItems[i].ToString()]); - } - - string[] additionalScopes = txtExtraScopes.Text.Split(new char[] { '\r', '\n' }, - StringSplitOptions.RemoveEmptyEntries); - - foreach (string additionalScope in additionalScopes) { - if (!string.IsNullOrWhiteSpace(additionalScope)) { - allScopes.Add(additionalScope); - } - } - - if (allScopes.Count == 0) { - MessageBox.Show(this, "You should select at least one scope.", this.Text, - MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - - webServer.TriggerAuthFlow(clientId, clientSecret, string.Join(" ", allScopes)); - } - - /// - /// Handles the Click event of the btnCancel control. - /// - /// The source of the event. - /// The instance containing the - /// event data. - private void btnCancel_Click(object sender, EventArgs e) { - this.Close(); - } - - /// - /// Raises the event. - /// - /// A - /// that contains the event data. - protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { - webServer.Stop(); - base.OnClosing(e); - } - } -} diff --git a/dfp/utilities/OAuthTokenGenerator/MainForm.resx b/dfp/utilities/OAuthTokenGenerator/MainForm.resx deleted file mode 100755 index 69dae4cba3a..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/MainForm.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - This application generates an OAuth2 refresh token for use with Ads* API .NET client libraries. - -This application requires an OAuth2 client ID and secret generated for Installed Application type. If you don't have one yet, follow the instructions at https://developers.google.com/adwords/api/docs/guides/authentication#installed to create one. - - - \ No newline at end of file diff --git a/dfp/utilities/OAuthTokenGenerator/OAuthTokenGenerator.csproj b/dfp/utilities/OAuthTokenGenerator/OAuthTokenGenerator.csproj deleted file mode 100755 index 269dfc2972f..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/OAuthTokenGenerator.csproj +++ /dev/null @@ -1,83 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {44B870E6-C579-40F5-A4BA-370C58708E36} - WinExe - Properties - Google.Api.Ads.Common.Utilities.OAuthTokenGenerator - OAuthTokenGenerator - v4.5.2 - - - 512 - Google.Api.Ads.Common.Utilities.OAuthTokenGenerator.Program - - - true - bin\Debug\ - DEBUG;TRACE - full - prompt - false - - - bin\Release\ - TRACE - true - pdbonly - AnyCPU - prompt - false - - - - - - - - - - - Properties\Properties.cs - - - - - Form - - - MainForm.cs - - - - Form - - - ResultDialog.cs - - - MainForm.cs - - - ResultDialog.cs - - - - - {277404DB-A439-4450-B3A5-186294CDF245} - Common - - - - - diff --git a/dfp/utilities/OAuthTokenGenerator/Program.cs b/dfp/utilities/OAuthTokenGenerator/Program.cs deleted file mode 100755 index 1492bf5d848..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace Google.Api.Ads.Common.Utilities.OAuthTokenGenerator { - - /// - /// Entry point for the application. - /// - internal static class Program { - - /// - /// The main entry point for the application. - /// - [STAThread] - private static void Main() { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainForm()); - } - } -} \ No newline at end of file diff --git a/dfp/utilities/OAuthTokenGenerator/Properties/AssemblyInfo.cs b/dfp/utilities/OAuthTokenGenerator/Properties/AssemblyInfo.cs deleted file mode 100755 index 788e61d1027..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("OAuth2 Token Generator Utility")] -[assembly: AssemblyDescription("This application helps you generate the necessary " + - "configuration files to use the Ads* API .NET libraries with OAuth2 as " + - "authentication mechanism.")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("e3893401-64bf-41c9-83ec-0604f870ca9a")] \ No newline at end of file diff --git a/dfp/utilities/OAuthTokenGenerator/Properties/Properties.cs b/dfp/utilities/OAuthTokenGenerator/Properties/Properties.cs deleted file mode 100755 index 64e801353c4..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/Properties/Properties.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2013, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System.Reflection; - -[assembly: AssemblyCompany("Google")] -[assembly: AssemblyProduct("Ads API Dotnet Common Library")] -[assembly: AssemblyCopyright("Copyright 2012, Google Inc. All Rights Reserved.")] -[assembly: AssemblyVersion("7.1.0.0")] -[assembly: AssemblyFileVersion("7.1.0.0")] diff --git a/dfp/utilities/OAuthTokenGenerator/ResultDialog.Designer.cs b/dfp/utilities/OAuthTokenGenerator/ResultDialog.Designer.cs deleted file mode 100755 index c508a2c9ee9..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/ResultDialog.Designer.cs +++ /dev/null @@ -1,88 +0,0 @@ -namespace Google.Api.Ads.Common.Utilities.OAuthTokenGenerator { - partial class ResultDialog { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) { - if (disposing && (components != null)) { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() { - this.txtConfig = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.btkOK = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // txtConfig - // - this.txtConfig.BackColor = System.Drawing.SystemColors.Window; - this.txtConfig.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtConfig.Location = new System.Drawing.Point(13, 40); - this.txtConfig.Multiline = true; - this.txtConfig.Name = "txtConfig"; - this.txtConfig.ReadOnly = true; - this.txtConfig.Size = new System.Drawing.Size(557, 199); - this.txtConfig.TabIndex = 0; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 13); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(309, 13); - this.label1.TabIndex = 1; - this.label1.Text = "Copy the snippet shown below to your App.config / Web.config."; - // - // btkOK - // - this.btkOK.Location = new System.Drawing.Point(495, 263); - this.btkOK.Name = "btkOK"; - this.btkOK.Size = new System.Drawing.Size(75, 23); - this.btkOK.TabIndex = 2; - this.btkOK.Text = "&OK"; - this.btkOK.UseVisualStyleBackColor = true; - this.btkOK.Click += new System.EventHandler(this.btnOk_Click); - // - // ResultDialog - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(582, 298); - this.Controls.Add(this.btkOK); - this.Controls.Add(this.label1); - this.Controls.Add(this.txtConfig); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ResultDialog"; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "OAuth2 Token Generator - Config outpot"; - this.TopMost = true; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox txtConfig; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button btkOK; - } -} \ No newline at end of file diff --git a/dfp/utilities/OAuthTokenGenerator/ResultDialog.cs b/dfp/utilities/OAuthTokenGenerator/ResultDialog.cs deleted file mode 100755 index fe9bb9ccae3..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/ResultDialog.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2016, Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Windows.Forms; - -namespace Google.Api.Ads.Common.Utilities.OAuthTokenGenerator { - - /// - /// A dialog to show the OAuth2 results. - /// - public partial class ResultDialog : Form { - - public ResultDialog(string configText) { - InitializeComponent(); - txtConfig.Text = configText.Replace("\n", "\r\n"); - } - - /// - /// Handles the Click event of the btnOk control. - /// - /// The source of the event. - /// The instance containing the - /// event data. - private void btnOk_Click(object sender, EventArgs e) { - this.Close(); - } - } -} diff --git a/dfp/utilities/OAuthTokenGenerator/ResultDialog.resx b/dfp/utilities/OAuthTokenGenerator/ResultDialog.resx deleted file mode 100755 index 1af7de150c9..00000000000 --- a/dfp/utilities/OAuthTokenGenerator/ResultDialog.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/adwords/examples/AdWords/CSharp/AdWords.Examples.CSharp.csproj b/examples/AdWords/CSharp/AdWords.Examples.CSharp.csproj similarity index 100% rename from adwords/examples/AdWords/CSharp/AdWords.Examples.CSharp.csproj rename to examples/AdWords/CSharp/AdWords.Examples.CSharp.csproj diff --git a/adwords/examples/AdWords/CSharp/App.config b/examples/AdWords/CSharp/App.config similarity index 100% rename from adwords/examples/AdWords/CSharp/App.config rename to examples/AdWords/CSharp/App.config diff --git a/adwords/examples/AdWords/CSharp/ExampleBase.cs b/examples/AdWords/CSharp/ExampleBase.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/ExampleBase.cs rename to examples/AdWords/CSharp/ExampleBase.cs diff --git a/adwords/examples/AdWords/CSharp/ExampleUtilities.cs b/examples/AdWords/CSharp/ExampleUtilities.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/ExampleUtilities.cs rename to examples/AdWords/CSharp/ExampleUtilities.cs diff --git a/adwords/examples/AdWords/CSharp/OAuth/AdWords.Examples.CSharp.OAuth.csproj b/examples/AdWords/CSharp/OAuth/AdWords.Examples.CSharp.OAuth.csproj similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/AdWords.Examples.CSharp.OAuth.csproj rename to examples/AdWords/CSharp/OAuth/AdWords.Examples.CSharp.OAuth.csproj diff --git a/adwords/examples/AdWords/CSharp/OAuth/ConsoleExample.cs b/examples/AdWords/CSharp/OAuth/ConsoleExample.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/ConsoleExample.cs rename to examples/AdWords/CSharp/OAuth/ConsoleExample.cs diff --git a/adwords/examples/AdWords/CSharp/OAuth/Default.aspx b/examples/AdWords/CSharp/OAuth/Default.aspx similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/Default.aspx rename to examples/AdWords/CSharp/OAuth/Default.aspx diff --git a/adwords/examples/AdWords/CSharp/OAuth/Default.aspx.cs b/examples/AdWords/CSharp/OAuth/Default.aspx.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/Default.aspx.cs rename to examples/AdWords/CSharp/OAuth/Default.aspx.cs diff --git a/adwords/examples/AdWords/CSharp/OAuth/Default.aspx.designer.cs b/examples/AdWords/CSharp/OAuth/Default.aspx.designer.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/Default.aspx.designer.cs rename to examples/AdWords/CSharp/OAuth/Default.aspx.designer.cs diff --git a/adwords/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx b/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx rename to examples/AdWords/CSharp/OAuth/OAuthLogin.aspx diff --git a/adwords/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx.cs b/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx.cs rename to examples/AdWords/CSharp/OAuth/OAuthLogin.aspx.cs diff --git a/adwords/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx.designer.cs b/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx.designer.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/OAuthLogin.aspx.designer.cs rename to examples/AdWords/CSharp/OAuth/OAuthLogin.aspx.designer.cs diff --git a/adwords/examples/AdWords/CSharp/OAuth/Properties/AssemblyInfo.cs b/examples/AdWords/CSharp/OAuth/Properties/AssemblyInfo.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/Properties/AssemblyInfo.cs rename to examples/AdWords/CSharp/OAuth/Properties/AssemblyInfo.cs diff --git a/adwords/examples/AdWords/CSharp/OAuth/Properties/Properties.cs b/examples/AdWords/CSharp/OAuth/Properties/Properties.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/Properties/Properties.cs rename to examples/AdWords/CSharp/OAuth/Properties/Properties.cs diff --git a/adwords/examples/AdWords/CSharp/OAuth/README.md b/examples/AdWords/CSharp/OAuth/README.md similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/README.md rename to examples/AdWords/CSharp/OAuth/README.md diff --git a/adwords/examples/AdWords/CSharp/OAuth/Web.config b/examples/AdWords/CSharp/OAuth/Web.config similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/Web.config rename to examples/AdWords/CSharp/OAuth/Web.config diff --git a/adwords/examples/AdWords/CSharp/OAuth/css/main.css b/examples/AdWords/CSharp/OAuth/css/main.css similarity index 100% rename from adwords/examples/AdWords/CSharp/OAuth/css/main.css rename to examples/AdWords/CSharp/OAuth/css/main.css diff --git a/adwords/examples/AdWords/CSharp/Program.cs b/examples/AdWords/CSharp/Program.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/Program.cs rename to examples/AdWords/CSharp/Program.cs diff --git a/adwords/examples/AdWords/CSharp/Properties/AssemblyInfo.cs b/examples/AdWords/CSharp/Properties/AssemblyInfo.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/Properties/AssemblyInfo.cs rename to examples/AdWords/CSharp/Properties/AssemblyInfo.cs diff --git a/adwords/examples/AdWords/CSharp/Properties/Properties.cs b/examples/AdWords/CSharp/Properties/Properties.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/Properties/Properties.cs rename to examples/AdWords/CSharp/Properties/Properties.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AccountManagement/AcceptServiceLink.cs b/examples/AdWords/CSharp/v201609/AccountManagement/AcceptServiceLink.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AccountManagement/AcceptServiceLink.cs rename to examples/AdWords/CSharp/v201609/AccountManagement/AcceptServiceLink.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AccountManagement/CreateAccount.cs b/examples/AdWords/CSharp/v201609/AccountManagement/CreateAccount.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AccountManagement/CreateAccount.cs rename to examples/AdWords/CSharp/v201609/AccountManagement/CreateAccount.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AccountManagement/GetAccountChanges.cs b/examples/AdWords/CSharp/v201609/AccountManagement/GetAccountChanges.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AccountManagement/GetAccountChanges.cs rename to examples/AdWords/CSharp/v201609/AccountManagement/GetAccountChanges.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AccountManagement/GetAccountHierarchy.cs b/examples/AdWords/CSharp/v201609/AccountManagement/GetAccountHierarchy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AccountManagement/GetAccountHierarchy.cs rename to examples/AdWords/CSharp/v201609/AccountManagement/GetAccountHierarchy.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddAdCustomizers.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/AddAdCustomizers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddAdCustomizers.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/AddAdCustomizers.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddAdGroupBidModifier.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/AddAdGroupBidModifier.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddAdGroupBidModifier.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/AddAdGroupBidModifier.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddClickToDownloadAd.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/AddClickToDownloadAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddClickToDownloadAd.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/AddClickToDownloadAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddHtml5Ad.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/AddHtml5Ad.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddHtml5Ad.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/AddHtml5Ad.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddResponsiveDisplayAd.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/AddResponsiveDisplayAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddResponsiveDisplayAd.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/AddResponsiveDisplayAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddUniversalAppCampaign.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/AddUniversalAppCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/AddUniversalAppCampaign.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/AddUniversalAppCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/GetAdGroupBidModifiers.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/GetAdGroupBidModifiers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/GetAdGroupBidModifiers.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/GetAdGroupBidModifiers.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.cs b/examples/AdWords/CSharp/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.cs rename to examples/AdWords/CSharp/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddAdGroupDemographicCriteria.cs b/examples/AdWords/CSharp/v201609/BasicOperations/AddAdGroupDemographicCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddAdGroupDemographicCriteria.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/AddAdGroupDemographicCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddAdGroups.cs b/examples/AdWords/CSharp/v201609/BasicOperations/AddAdGroups.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddAdGroups.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/AddAdGroups.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddCampaigns.cs b/examples/AdWords/CSharp/v201609/BasicOperations/AddCampaigns.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddCampaigns.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/AddCampaigns.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddExpandedTextAds.cs b/examples/AdWords/CSharp/v201609/BasicOperations/AddExpandedTextAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddExpandedTextAds.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/AddExpandedTextAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddKeywords.cs b/examples/AdWords/CSharp/v201609/BasicOperations/AddKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/AddKeywords.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/AddKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetAdGroups.cs b/examples/AdWords/CSharp/v201609/BasicOperations/GetAdGroups.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetAdGroups.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/GetAdGroups.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetCampaigns.cs b/examples/AdWords/CSharp/v201609/BasicOperations/GetCampaigns.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetCampaigns.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/GetCampaigns.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetCampaignsWithAwql.cs b/examples/AdWords/CSharp/v201609/BasicOperations/GetCampaignsWithAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetCampaignsWithAwql.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/GetCampaignsWithAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetExpandedTextAds.cs b/examples/AdWords/CSharp/v201609/BasicOperations/GetExpandedTextAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetExpandedTextAds.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/GetExpandedTextAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetKeywords.cs b/examples/AdWords/CSharp/v201609/BasicOperations/GetKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetKeywords.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/GetKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetTextAds.cs b/examples/AdWords/CSharp/v201609/BasicOperations/GetTextAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/GetTextAds.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/GetTextAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/PauseAd.cs b/examples/AdWords/CSharp/v201609/BasicOperations/PauseAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/PauseAd.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/PauseAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/RemoveAd.cs b/examples/AdWords/CSharp/v201609/BasicOperations/RemoveAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/RemoveAd.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/RemoveAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/RemoveAdGroup.cs b/examples/AdWords/CSharp/v201609/BasicOperations/RemoveAdGroup.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/RemoveAdGroup.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/RemoveAdGroup.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/RemoveCampaign.cs b/examples/AdWords/CSharp/v201609/BasicOperations/RemoveCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/RemoveCampaign.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/RemoveCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/RemoveKeyword.cs b/examples/AdWords/CSharp/v201609/BasicOperations/RemoveKeyword.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/RemoveKeyword.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/RemoveKeyword.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/UpdateAdGroup.cs b/examples/AdWords/CSharp/v201609/BasicOperations/UpdateAdGroup.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/UpdateAdGroup.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/UpdateAdGroup.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/UpdateCampaign.cs b/examples/AdWords/CSharp/v201609/BasicOperations/UpdateCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/UpdateCampaign.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/UpdateCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/BasicOperations/UpdateKeyword.cs b/examples/AdWords/CSharp/v201609/BasicOperations/UpdateKeyword.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/BasicOperations/UpdateKeyword.cs rename to examples/AdWords/CSharp/v201609/BasicOperations/UpdateKeyword.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddCampaignLabels.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/AddCampaignLabels.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddCampaignLabels.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/AddCampaignLabels.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddDraft.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/AddDraft.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddDraft.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/AddDraft.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddTrial.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/AddTrial.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/AddTrial.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/AddTrial.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAds.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAds.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/GetCampaignsByLabel.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/GetCampaignsByLabel.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/GetCampaignsByLabel.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/GetCampaignsByLabel.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/GraduateTrial.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/GraduateTrial.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/GraduateTrial.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/GraduateTrial.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/SetAdParameters.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/SetAdParameters.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/SetAdParameters.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/SetAdParameters.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/SetBidModifier.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/SetBidModifier.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/SetBidModifier.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/SetBidModifier.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/CampaignManagement/ValidateTextAd.cs b/examples/AdWords/CSharp/v201609/CampaignManagement/ValidateTextAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/CampaignManagement/ValidateTextAd.cs rename to examples/AdWords/CSharp/v201609/CampaignManagement/ValidateTextAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/ErrorHandling/HandlePartialFailures.cs b/examples/AdWords/CSharp/v201609/ErrorHandling/HandlePartialFailures.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/ErrorHandling/HandlePartialFailures.cs rename to examples/AdWords/CSharp/v201609/ErrorHandling/HandlePartialFailures.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/ErrorHandling/HandlePolicyViolationError.cs b/examples/AdWords/CSharp/v201609/ErrorHandling/HandlePolicyViolationError.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/ErrorHandling/HandlePolicyViolationError.cs rename to examples/AdWords/CSharp/v201609/ErrorHandling/HandlePolicyViolationError.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/ErrorHandling/HandleRateExceededError.cs b/examples/AdWords/CSharp/v201609/ErrorHandling/HandleRateExceededError.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/ErrorHandling/HandleRateExceededError.cs rename to examples/AdWords/CSharp/v201609/ErrorHandling/HandleRateExceededError.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.cs b/examples/AdWords/CSharp/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.cs rename to examples/AdWords/CSharp/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Extensions/AddPrices.cs b/examples/AdWords/CSharp/v201609/Extensions/AddPrices.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Extensions/AddPrices.cs rename to examples/AdWords/CSharp/v201609/Extensions/AddPrices.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Extensions/AddSitelinks.cs b/examples/AdWords/CSharp/v201609/Extensions/AddSitelinks.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Extensions/AddSitelinks.cs rename to examples/AdWords/CSharp/v201609/Extensions/AddSitelinks.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Extensions/AddSitelinksUsingFeeds.cs b/examples/AdWords/CSharp/v201609/Extensions/AddSitelinksUsingFeeds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Extensions/AddSitelinksUsingFeeds.cs rename to examples/AdWords/CSharp/v201609/Extensions/AddSitelinksUsingFeeds.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Migration/MigrateToExtensionSettings.cs b/examples/AdWords/CSharp/v201609/Migration/MigrateToExtensionSettings.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Migration/MigrateToExtensionSettings.cs rename to examples/AdWords/CSharp/v201609/Migration/MigrateToExtensionSettings.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Miscellaneous/GetAllVideosAndImages.cs b/examples/AdWords/CSharp/v201609/Miscellaneous/GetAllVideosAndImages.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Miscellaneous/GetAllVideosAndImages.cs rename to examples/AdWords/CSharp/v201609/Miscellaneous/GetAllVideosAndImages.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Miscellaneous/UploadImage.cs b/examples/AdWords/CSharp/v201609/Miscellaneous/UploadImage.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Miscellaneous/UploadImage.cs rename to examples/AdWords/CSharp/v201609/Miscellaneous/UploadImage.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Miscellaneous/UploadMediaBundle.cs b/examples/AdWords/CSharp/v201609/Miscellaneous/UploadMediaBundle.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Miscellaneous/UploadMediaBundle.cs rename to examples/AdWords/CSharp/v201609/Miscellaneous/UploadMediaBundle.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Optimization/EstimateKeywordTraffic.cs b/examples/AdWords/CSharp/v201609/Optimization/EstimateKeywordTraffic.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Optimization/EstimateKeywordTraffic.cs rename to examples/AdWords/CSharp/v201609/Optimization/EstimateKeywordTraffic.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Optimization/GetAdGroupBidSimulations.cs b/examples/AdWords/CSharp/v201609/Optimization/GetAdGroupBidSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Optimization/GetAdGroupBidSimulations.cs rename to examples/AdWords/CSharp/v201609/Optimization/GetAdGroupBidSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.cs b/examples/AdWords/CSharp/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.cs rename to examples/AdWords/CSharp/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Optimization/GetKeywordBidSimulations.cs b/examples/AdWords/CSharp/v201609/Optimization/GetKeywordBidSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Optimization/GetKeywordBidSimulations.cs rename to examples/AdWords/CSharp/v201609/Optimization/GetKeywordBidSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Optimization/GetKeywordIdeas.cs b/examples/AdWords/CSharp/v201609/Optimization/GetKeywordIdeas.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Optimization/GetKeywordIdeas.cs rename to examples/AdWords/CSharp/v201609/Optimization/GetKeywordIdeas.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Remarketing/AddAudience.cs b/examples/AdWords/CSharp/v201609/Remarketing/AddAudience.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Remarketing/AddAudience.cs rename to examples/AdWords/CSharp/v201609/Remarketing/AddAudience.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Remarketing/AddConversionTracker.cs b/examples/AdWords/CSharp/v201609/Remarketing/AddConversionTracker.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Remarketing/AddConversionTracker.cs rename to examples/AdWords/CSharp/v201609/Remarketing/AddConversionTracker.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Remarketing/AddCrmBasedUserList.cs b/examples/AdWords/CSharp/v201609/Remarketing/AddCrmBasedUserList.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Remarketing/AddCrmBasedUserList.cs rename to examples/AdWords/CSharp/v201609/Remarketing/AddCrmBasedUserList.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Remarketing/AddRuleBasedRemarketingList.cs b/examples/AdWords/CSharp/v201609/Remarketing/AddRuleBasedRemarketingList.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Remarketing/AddRuleBasedRemarketingList.cs rename to examples/AdWords/CSharp/v201609/Remarketing/AddRuleBasedRemarketingList.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Remarketing/UploadOfflineCallConversions.cs b/examples/AdWords/CSharp/v201609/Remarketing/UploadOfflineCallConversions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Remarketing/UploadOfflineCallConversions.cs rename to examples/AdWords/CSharp/v201609/Remarketing/UploadOfflineCallConversions.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Remarketing/UploadOfflineConversions.cs b/examples/AdWords/CSharp/v201609/Remarketing/UploadOfflineConversions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Remarketing/UploadOfflineConversions.cs rename to examples/AdWords/CSharp/v201609/Remarketing/UploadOfflineConversions.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReport.cs b/examples/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReport.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReport.cs rename to examples/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReport.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReportWithAwql.cs b/examples/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReportWithAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReportWithAwql.cs rename to examples/AdWords/CSharp/v201609/Reporting/DownloadCriteriaReportWithAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Reporting/GetReportFields.cs b/examples/AdWords/CSharp/v201609/Reporting/GetReportFields.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Reporting/GetReportFields.cs rename to examples/AdWords/CSharp/v201609/Reporting/GetReportFields.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Reporting/ParallelReportDownload.cs b/examples/AdWords/CSharp/v201609/Reporting/ParallelReportDownload.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Reporting/ParallelReportDownload.cs rename to examples/AdWords/CSharp/v201609/Reporting/ParallelReportDownload.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportResults.cs b/examples/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportResults.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportResults.cs rename to examples/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportResults.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportToPoco.cs b/examples/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportToPoco.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportToPoco.cs rename to examples/AdWords/CSharp/v201609/Reporting/StreamCriteriaReportToPoco.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Reporting/StreamReportToPredefinedReportRowType.cs b/examples/AdWords/CSharp/v201609/Reporting/StreamReportToPredefinedReportRowType.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Reporting/StreamReportToPredefinedReportRowType.cs rename to examples/AdWords/CSharp/v201609/Reporting/StreamReportToPredefinedReportRowType.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductPartitionTree.cs b/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductPartitionTree.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductPartitionTree.cs rename to examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductPartitionTree.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductScope.cs b/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductScope.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductScope.cs rename to examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddProductScope.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddShoppingCampaign.cs b/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddShoppingCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddShoppingCampaign.cs rename to examples/AdWords/CSharp/v201609/ShoppingCampaigns/AddShoppingCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.cs b/examples/AdWords/CSharp/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.cs rename to examples/AdWords/CSharp/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs b/examples/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs rename to examples/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/README.md b/examples/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/README.md similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/README.md rename to examples/AdWords/CSharp/v201609/Solutions/BudgetUtilizationReport/README.md diff --git a/adwords/examples/AdWords/CSharp/v201609/Solutions/GetNewKeywords/GetNewKeywords.cs b/examples/AdWords/CSharp/v201609/Solutions/GetNewKeywords/GetNewKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Solutions/GetNewKeywords/GetNewKeywords.cs rename to examples/AdWords/CSharp/v201609/Solutions/GetNewKeywords/GetNewKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Solutions/GetNewKeywords/README.md b/examples/AdWords/CSharp/v201609/Solutions/GetNewKeywords/README.md similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Solutions/GetNewKeywords/README.md rename to examples/AdWords/CSharp/v201609/Solutions/GetNewKeywords/README.md diff --git a/adwords/examples/AdWords/CSharp/v201609/Targeting/AddCampaignTargetingCriteria.cs b/examples/AdWords/CSharp/v201609/Targeting/AddCampaignTargetingCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Targeting/AddCampaignTargetingCriteria.cs rename to examples/AdWords/CSharp/v201609/Targeting/AddCampaignTargetingCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Targeting/GetCampaignTargetingCriteria.cs b/examples/AdWords/CSharp/v201609/Targeting/GetCampaignTargetingCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Targeting/GetCampaignTargetingCriteria.cs rename to examples/AdWords/CSharp/v201609/Targeting/GetCampaignTargetingCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Targeting/GetTargetableLanguagesAndCarriers.cs b/examples/AdWords/CSharp/v201609/Targeting/GetTargetableLanguagesAndCarriers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Targeting/GetTargetableLanguagesAndCarriers.cs rename to examples/AdWords/CSharp/v201609/Targeting/GetTargetableLanguagesAndCarriers.cs diff --git a/adwords/examples/AdWords/CSharp/v201609/Targeting/LookupLocation.cs b/examples/AdWords/CSharp/v201609/Targeting/LookupLocation.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201609/Targeting/LookupLocation.cs rename to examples/AdWords/CSharp/v201609/Targeting/LookupLocation.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AccountManagement/AcceptServiceLink.cs b/examples/AdWords/CSharp/v201702/AccountManagement/AcceptServiceLink.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AccountManagement/AcceptServiceLink.cs rename to examples/AdWords/CSharp/v201702/AccountManagement/AcceptServiceLink.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AccountManagement/CreateAccount.cs b/examples/AdWords/CSharp/v201702/AccountManagement/CreateAccount.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AccountManagement/CreateAccount.cs rename to examples/AdWords/CSharp/v201702/AccountManagement/CreateAccount.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AccountManagement/GetAccountChanges.cs b/examples/AdWords/CSharp/v201702/AccountManagement/GetAccountChanges.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AccountManagement/GetAccountChanges.cs rename to examples/AdWords/CSharp/v201702/AccountManagement/GetAccountChanges.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AccountManagement/GetAccountHierarchy.cs b/examples/AdWords/CSharp/v201702/AccountManagement/GetAccountHierarchy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AccountManagement/GetAccountHierarchy.cs rename to examples/AdWords/CSharp/v201702/AccountManagement/GetAccountHierarchy.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddAdCustomizers.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/AddAdCustomizers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddAdCustomizers.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/AddAdCustomizers.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddAdGroupBidModifier.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/AddAdGroupBidModifier.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddAdGroupBidModifier.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/AddAdGroupBidModifier.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddClickToDownloadAd.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/AddClickToDownloadAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddClickToDownloadAd.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/AddClickToDownloadAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddHtml5Ad.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/AddHtml5Ad.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddHtml5Ad.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/AddHtml5Ad.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddResponsiveDisplayAd.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/AddResponsiveDisplayAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddResponsiveDisplayAd.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/AddResponsiveDisplayAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddUniversalAppCampaign.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/AddUniversalAppCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/AddUniversalAppCampaign.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/AddUniversalAppCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/GetAdGroupBidModifiers.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/GetAdGroupBidModifiers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/GetAdGroupBidModifiers.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/GetAdGroupBidModifiers.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.cs b/examples/AdWords/CSharp/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.cs rename to examples/AdWords/CSharp/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddAdGroupDemographicCriteria.cs b/examples/AdWords/CSharp/v201702/BasicOperations/AddAdGroupDemographicCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddAdGroupDemographicCriteria.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/AddAdGroupDemographicCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddAdGroups.cs b/examples/AdWords/CSharp/v201702/BasicOperations/AddAdGroups.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddAdGroups.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/AddAdGroups.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddCampaigns.cs b/examples/AdWords/CSharp/v201702/BasicOperations/AddCampaigns.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddCampaigns.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/AddCampaigns.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddExpandedTextAds.cs b/examples/AdWords/CSharp/v201702/BasicOperations/AddExpandedTextAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddExpandedTextAds.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/AddExpandedTextAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddKeywords.cs b/examples/AdWords/CSharp/v201702/BasicOperations/AddKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/AddKeywords.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/AddKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetAdGroups.cs b/examples/AdWords/CSharp/v201702/BasicOperations/GetAdGroups.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetAdGroups.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/GetAdGroups.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetCampaigns.cs b/examples/AdWords/CSharp/v201702/BasicOperations/GetCampaigns.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetCampaigns.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/GetCampaigns.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetCampaignsWithAwql.cs b/examples/AdWords/CSharp/v201702/BasicOperations/GetCampaignsWithAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetCampaignsWithAwql.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/GetCampaignsWithAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetExpandedTextAds.cs b/examples/AdWords/CSharp/v201702/BasicOperations/GetExpandedTextAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetExpandedTextAds.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/GetExpandedTextAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetKeywords.cs b/examples/AdWords/CSharp/v201702/BasicOperations/GetKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetKeywords.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/GetKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetTextAds.cs b/examples/AdWords/CSharp/v201702/BasicOperations/GetTextAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/GetTextAds.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/GetTextAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/PauseAd.cs b/examples/AdWords/CSharp/v201702/BasicOperations/PauseAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/PauseAd.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/PauseAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/RemoveAd.cs b/examples/AdWords/CSharp/v201702/BasicOperations/RemoveAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/RemoveAd.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/RemoveAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/RemoveAdGroup.cs b/examples/AdWords/CSharp/v201702/BasicOperations/RemoveAdGroup.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/RemoveAdGroup.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/RemoveAdGroup.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/RemoveCampaign.cs b/examples/AdWords/CSharp/v201702/BasicOperations/RemoveCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/RemoveCampaign.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/RemoveCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/RemoveKeyword.cs b/examples/AdWords/CSharp/v201702/BasicOperations/RemoveKeyword.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/RemoveKeyword.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/RemoveKeyword.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/UpdateAdGroup.cs b/examples/AdWords/CSharp/v201702/BasicOperations/UpdateAdGroup.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/UpdateAdGroup.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/UpdateAdGroup.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/UpdateCampaign.cs b/examples/AdWords/CSharp/v201702/BasicOperations/UpdateCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/UpdateCampaign.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/UpdateCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/BasicOperations/UpdateKeyword.cs b/examples/AdWords/CSharp/v201702/BasicOperations/UpdateKeyword.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/BasicOperations/UpdateKeyword.cs rename to examples/AdWords/CSharp/v201702/BasicOperations/UpdateKeyword.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddCampaignLabels.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/AddCampaignLabels.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddCampaignLabels.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/AddCampaignLabels.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddDraft.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/AddDraft.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddDraft.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/AddDraft.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddTrial.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/AddTrial.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/AddTrial.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/AddTrial.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAds.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAds.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/GetCampaignsByLabel.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/GetCampaignsByLabel.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/GetCampaignsByLabel.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/GetCampaignsByLabel.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/GraduateTrial.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/GraduateTrial.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/GraduateTrial.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/GraduateTrial.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/SetAdParameters.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/SetAdParameters.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/SetAdParameters.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/SetAdParameters.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/SetBidModifier.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/SetBidModifier.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/SetBidModifier.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/SetBidModifier.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/CampaignManagement/ValidateTextAd.cs b/examples/AdWords/CSharp/v201702/CampaignManagement/ValidateTextAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/CampaignManagement/ValidateTextAd.cs rename to examples/AdWords/CSharp/v201702/CampaignManagement/ValidateTextAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/ErrorHandling/HandlePartialFailures.cs b/examples/AdWords/CSharp/v201702/ErrorHandling/HandlePartialFailures.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/ErrorHandling/HandlePartialFailures.cs rename to examples/AdWords/CSharp/v201702/ErrorHandling/HandlePartialFailures.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/ErrorHandling/HandlePolicyViolationError.cs b/examples/AdWords/CSharp/v201702/ErrorHandling/HandlePolicyViolationError.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/ErrorHandling/HandlePolicyViolationError.cs rename to examples/AdWords/CSharp/v201702/ErrorHandling/HandlePolicyViolationError.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/ErrorHandling/HandleRateExceededError.cs b/examples/AdWords/CSharp/v201702/ErrorHandling/HandleRateExceededError.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/ErrorHandling/HandleRateExceededError.cs rename to examples/AdWords/CSharp/v201702/ErrorHandling/HandleRateExceededError.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.cs b/examples/AdWords/CSharp/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.cs rename to examples/AdWords/CSharp/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Extensions/AddPrices.cs b/examples/AdWords/CSharp/v201702/Extensions/AddPrices.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Extensions/AddPrices.cs rename to examples/AdWords/CSharp/v201702/Extensions/AddPrices.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Extensions/AddSitelinks.cs b/examples/AdWords/CSharp/v201702/Extensions/AddSitelinks.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Extensions/AddSitelinks.cs rename to examples/AdWords/CSharp/v201702/Extensions/AddSitelinks.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Extensions/AddSitelinksUsingFeeds.cs b/examples/AdWords/CSharp/v201702/Extensions/AddSitelinksUsingFeeds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Extensions/AddSitelinksUsingFeeds.cs rename to examples/AdWords/CSharp/v201702/Extensions/AddSitelinksUsingFeeds.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Migration/MigrateToExtensionSettings.cs b/examples/AdWords/CSharp/v201702/Migration/MigrateToExtensionSettings.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Migration/MigrateToExtensionSettings.cs rename to examples/AdWords/CSharp/v201702/Migration/MigrateToExtensionSettings.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Miscellaneous/GetAllVideosAndImages.cs b/examples/AdWords/CSharp/v201702/Miscellaneous/GetAllVideosAndImages.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Miscellaneous/GetAllVideosAndImages.cs rename to examples/AdWords/CSharp/v201702/Miscellaneous/GetAllVideosAndImages.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Miscellaneous/UploadImage.cs b/examples/AdWords/CSharp/v201702/Miscellaneous/UploadImage.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Miscellaneous/UploadImage.cs rename to examples/AdWords/CSharp/v201702/Miscellaneous/UploadImage.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Miscellaneous/UploadMediaBundle.cs b/examples/AdWords/CSharp/v201702/Miscellaneous/UploadMediaBundle.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Miscellaneous/UploadMediaBundle.cs rename to examples/AdWords/CSharp/v201702/Miscellaneous/UploadMediaBundle.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Optimization/EstimateKeywordTraffic.cs b/examples/AdWords/CSharp/v201702/Optimization/EstimateKeywordTraffic.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Optimization/EstimateKeywordTraffic.cs rename to examples/AdWords/CSharp/v201702/Optimization/EstimateKeywordTraffic.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Optimization/GetAdGroupBidSimulations.cs b/examples/AdWords/CSharp/v201702/Optimization/GetAdGroupBidSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Optimization/GetAdGroupBidSimulations.cs rename to examples/AdWords/CSharp/v201702/Optimization/GetAdGroupBidSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.cs b/examples/AdWords/CSharp/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.cs rename to examples/AdWords/CSharp/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Optimization/GetKeywordBidSimulations.cs b/examples/AdWords/CSharp/v201702/Optimization/GetKeywordBidSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Optimization/GetKeywordBidSimulations.cs rename to examples/AdWords/CSharp/v201702/Optimization/GetKeywordBidSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Optimization/GetKeywordIdeas.cs b/examples/AdWords/CSharp/v201702/Optimization/GetKeywordIdeas.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Optimization/GetKeywordIdeas.cs rename to examples/AdWords/CSharp/v201702/Optimization/GetKeywordIdeas.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Remarketing/AddAudience.cs b/examples/AdWords/CSharp/v201702/Remarketing/AddAudience.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Remarketing/AddAudience.cs rename to examples/AdWords/CSharp/v201702/Remarketing/AddAudience.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Remarketing/AddConversionTracker.cs b/examples/AdWords/CSharp/v201702/Remarketing/AddConversionTracker.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Remarketing/AddConversionTracker.cs rename to examples/AdWords/CSharp/v201702/Remarketing/AddConversionTracker.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Remarketing/AddCrmBasedUserList.cs b/examples/AdWords/CSharp/v201702/Remarketing/AddCrmBasedUserList.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Remarketing/AddCrmBasedUserList.cs rename to examples/AdWords/CSharp/v201702/Remarketing/AddCrmBasedUserList.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Remarketing/AddRuleBasedRemarketingList.cs b/examples/AdWords/CSharp/v201702/Remarketing/AddRuleBasedRemarketingList.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Remarketing/AddRuleBasedRemarketingList.cs rename to examples/AdWords/CSharp/v201702/Remarketing/AddRuleBasedRemarketingList.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Remarketing/UploadOfflineCallConversions.cs b/examples/AdWords/CSharp/v201702/Remarketing/UploadOfflineCallConversions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Remarketing/UploadOfflineCallConversions.cs rename to examples/AdWords/CSharp/v201702/Remarketing/UploadOfflineCallConversions.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Remarketing/UploadOfflineConversions.cs b/examples/AdWords/CSharp/v201702/Remarketing/UploadOfflineConversions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Remarketing/UploadOfflineConversions.cs rename to examples/AdWords/CSharp/v201702/Remarketing/UploadOfflineConversions.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithAwql.cs b/examples/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithAwql.cs rename to examples/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithSelector.cs b/examples/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithSelector.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithSelector.cs rename to examples/AdWords/CSharp/v201702/Reporting/DownloadCriteriaReportWithSelector.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Reporting/GetReportFields.cs b/examples/AdWords/CSharp/v201702/Reporting/GetReportFields.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Reporting/GetReportFields.cs rename to examples/AdWords/CSharp/v201702/Reporting/GetReportFields.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Reporting/ParallelReportDownload.cs b/examples/AdWords/CSharp/v201702/Reporting/ParallelReportDownload.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Reporting/ParallelReportDownload.cs rename to examples/AdWords/CSharp/v201702/Reporting/ParallelReportDownload.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportResults.cs b/examples/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportResults.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportResults.cs rename to examples/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportResults.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportToPoco.cs b/examples/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportToPoco.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportToPoco.cs rename to examples/AdWords/CSharp/v201702/Reporting/StreamCriteriaReportToPoco.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Reporting/StreamReportToPredefinedReportRowType.cs b/examples/AdWords/CSharp/v201702/Reporting/StreamReportToPredefinedReportRowType.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Reporting/StreamReportToPredefinedReportRowType.cs rename to examples/AdWords/CSharp/v201702/Reporting/StreamReportToPredefinedReportRowType.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductPartitionTree.cs b/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductPartitionTree.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductPartitionTree.cs rename to examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductPartitionTree.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductScope.cs b/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductScope.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductScope.cs rename to examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddProductScope.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaign.cs b/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaign.cs rename to examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs b/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs rename to examples/AdWords/CSharp/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.cs b/examples/AdWords/CSharp/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.cs rename to examples/AdWords/CSharp/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs b/examples/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs rename to examples/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/README.md b/examples/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/README.md similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/README.md rename to examples/AdWords/CSharp/v201702/Solutions/BudgetUtilizationReport/README.md diff --git a/adwords/examples/AdWords/CSharp/v201702/Solutions/GetNewKeywords/GetNewKeywords.cs b/examples/AdWords/CSharp/v201702/Solutions/GetNewKeywords/GetNewKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Solutions/GetNewKeywords/GetNewKeywords.cs rename to examples/AdWords/CSharp/v201702/Solutions/GetNewKeywords/GetNewKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Solutions/GetNewKeywords/README.md b/examples/AdWords/CSharp/v201702/Solutions/GetNewKeywords/README.md similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Solutions/GetNewKeywords/README.md rename to examples/AdWords/CSharp/v201702/Solutions/GetNewKeywords/README.md diff --git a/adwords/examples/AdWords/CSharp/v201702/Targeting/AddCampaignTargetingCriteria.cs b/examples/AdWords/CSharp/v201702/Targeting/AddCampaignTargetingCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Targeting/AddCampaignTargetingCriteria.cs rename to examples/AdWords/CSharp/v201702/Targeting/AddCampaignTargetingCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Targeting/GetCampaignTargetingCriteria.cs b/examples/AdWords/CSharp/v201702/Targeting/GetCampaignTargetingCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Targeting/GetCampaignTargetingCriteria.cs rename to examples/AdWords/CSharp/v201702/Targeting/GetCampaignTargetingCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Targeting/GetTargetableLanguagesAndCarriers.cs b/examples/AdWords/CSharp/v201702/Targeting/GetTargetableLanguagesAndCarriers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Targeting/GetTargetableLanguagesAndCarriers.cs rename to examples/AdWords/CSharp/v201702/Targeting/GetTargetableLanguagesAndCarriers.cs diff --git a/adwords/examples/AdWords/CSharp/v201702/Targeting/LookupLocation.cs b/examples/AdWords/CSharp/v201702/Targeting/LookupLocation.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201702/Targeting/LookupLocation.cs rename to examples/AdWords/CSharp/v201702/Targeting/LookupLocation.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AccountManagement/AcceptServiceLink.cs b/examples/AdWords/CSharp/v201705/AccountManagement/AcceptServiceLink.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AccountManagement/AcceptServiceLink.cs rename to examples/AdWords/CSharp/v201705/AccountManagement/AcceptServiceLink.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AccountManagement/CreateAccount.cs b/examples/AdWords/CSharp/v201705/AccountManagement/CreateAccount.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AccountManagement/CreateAccount.cs rename to examples/AdWords/CSharp/v201705/AccountManagement/CreateAccount.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AccountManagement/GetAccountChanges.cs b/examples/AdWords/CSharp/v201705/AccountManagement/GetAccountChanges.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AccountManagement/GetAccountChanges.cs rename to examples/AdWords/CSharp/v201705/AccountManagement/GetAccountChanges.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AccountManagement/GetAccountHierarchy.cs b/examples/AdWords/CSharp/v201705/AccountManagement/GetAccountHierarchy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AccountManagement/GetAccountHierarchy.cs rename to examples/AdWords/CSharp/v201705/AccountManagement/GetAccountHierarchy.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddAdCustomizers.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddAdCustomizers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddAdCustomizers.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddAdCustomizers.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddAdGroupBidModifier.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddAdGroupBidModifier.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddAdGroupBidModifier.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddAdGroupBidModifier.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddClickToDownloadAd.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddClickToDownloadAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddClickToDownloadAd.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddClickToDownloadAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicPageFeed.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicPageFeed.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicPageFeed.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicPageFeed.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddHtml5Ad.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddHtml5Ad.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddHtml5Ad.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddHtml5Ad.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddResponsiveDisplayAd.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddResponsiveDisplayAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddResponsiveDisplayAd.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddResponsiveDisplayAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddUniversalAppCampaign.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/AddUniversalAppCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/AddUniversalAppCampaign.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/AddUniversalAppCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/GetAdGroupBidModifiers.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/GetAdGroupBidModifiers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/GetAdGroupBidModifiers.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/GetAdGroupBidModifiers.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.cs b/examples/AdWords/CSharp/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.cs rename to examples/AdWords/CSharp/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddAdGroupDemographicCriteria.cs b/examples/AdWords/CSharp/v201705/BasicOperations/AddAdGroupDemographicCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddAdGroupDemographicCriteria.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/AddAdGroupDemographicCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddAdGroups.cs b/examples/AdWords/CSharp/v201705/BasicOperations/AddAdGroups.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddAdGroups.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/AddAdGroups.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddCampaigns.cs b/examples/AdWords/CSharp/v201705/BasicOperations/AddCampaigns.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddCampaigns.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/AddCampaigns.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddExpandedTextAds.cs b/examples/AdWords/CSharp/v201705/BasicOperations/AddExpandedTextAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddExpandedTextAds.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/AddExpandedTextAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddKeywords.cs b/examples/AdWords/CSharp/v201705/BasicOperations/AddKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/AddKeywords.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/AddKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetAdGroups.cs b/examples/AdWords/CSharp/v201705/BasicOperations/GetAdGroups.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetAdGroups.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/GetAdGroups.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetCampaigns.cs b/examples/AdWords/CSharp/v201705/BasicOperations/GetCampaigns.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetCampaigns.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/GetCampaigns.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetCampaignsWithAwql.cs b/examples/AdWords/CSharp/v201705/BasicOperations/GetCampaignsWithAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetCampaignsWithAwql.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/GetCampaignsWithAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetExpandedTextAds.cs b/examples/AdWords/CSharp/v201705/BasicOperations/GetExpandedTextAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetExpandedTextAds.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/GetExpandedTextAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetKeywords.cs b/examples/AdWords/CSharp/v201705/BasicOperations/GetKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/GetKeywords.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/GetKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/PauseAd.cs b/examples/AdWords/CSharp/v201705/BasicOperations/PauseAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/PauseAd.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/PauseAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/RemoveAd.cs b/examples/AdWords/CSharp/v201705/BasicOperations/RemoveAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/RemoveAd.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/RemoveAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/RemoveAdGroup.cs b/examples/AdWords/CSharp/v201705/BasicOperations/RemoveAdGroup.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/RemoveAdGroup.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/RemoveAdGroup.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/RemoveCampaign.cs b/examples/AdWords/CSharp/v201705/BasicOperations/RemoveCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/RemoveCampaign.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/RemoveCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/RemoveKeyword.cs b/examples/AdWords/CSharp/v201705/BasicOperations/RemoveKeyword.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/RemoveKeyword.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/RemoveKeyword.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/UpdateAdGroup.cs b/examples/AdWords/CSharp/v201705/BasicOperations/UpdateAdGroup.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/UpdateAdGroup.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/UpdateAdGroup.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/UpdateCampaign.cs b/examples/AdWords/CSharp/v201705/BasicOperations/UpdateCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/UpdateCampaign.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/UpdateCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/BasicOperations/UpdateKeyword.cs b/examples/AdWords/CSharp/v201705/BasicOperations/UpdateKeyword.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/BasicOperations/UpdateKeyword.cs rename to examples/AdWords/CSharp/v201705/BasicOperations/UpdateKeyword.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddCampaignLabels.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/AddCampaignLabels.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddCampaignLabels.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/AddCampaignLabels.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddDraft.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/AddDraft.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddDraft.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/AddDraft.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddTrial.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/AddTrial.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/AddTrial.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/AddTrial.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAds.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAds.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/GetAllDisapprovedAdsWihAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/GetCampaignsByLabel.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/GetCampaignsByLabel.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/GetCampaignsByLabel.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/GetCampaignsByLabel.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/GraduateTrial.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/GraduateTrial.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/GraduateTrial.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/GraduateTrial.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/SetAdParameters.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/SetAdParameters.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/SetAdParameters.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/SetAdParameters.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/SetBidModifier.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/SetBidModifier.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/SetBidModifier.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/SetBidModifier.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/CampaignManagement/ValidateTextAd.cs b/examples/AdWords/CSharp/v201705/CampaignManagement/ValidateTextAd.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/CampaignManagement/ValidateTextAd.cs rename to examples/AdWords/CSharp/v201705/CampaignManagement/ValidateTextAd.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/ErrorHandling/HandlePartialFailures.cs b/examples/AdWords/CSharp/v201705/ErrorHandling/HandlePartialFailures.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/ErrorHandling/HandlePartialFailures.cs rename to examples/AdWords/CSharp/v201705/ErrorHandling/HandlePartialFailures.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/ErrorHandling/HandlePolicyViolationError.cs b/examples/AdWords/CSharp/v201705/ErrorHandling/HandlePolicyViolationError.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/ErrorHandling/HandlePolicyViolationError.cs rename to examples/AdWords/CSharp/v201705/ErrorHandling/HandlePolicyViolationError.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/ErrorHandling/HandleRateExceededError.cs b/examples/AdWords/CSharp/v201705/ErrorHandling/HandleRateExceededError.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/ErrorHandling/HandleRateExceededError.cs rename to examples/AdWords/CSharp/v201705/ErrorHandling/HandleRateExceededError.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.cs b/examples/AdWords/CSharp/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.cs rename to examples/AdWords/CSharp/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Extensions/AddPrices.cs b/examples/AdWords/CSharp/v201705/Extensions/AddPrices.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Extensions/AddPrices.cs rename to examples/AdWords/CSharp/v201705/Extensions/AddPrices.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Extensions/AddSitelinks.cs b/examples/AdWords/CSharp/v201705/Extensions/AddSitelinks.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Extensions/AddSitelinks.cs rename to examples/AdWords/CSharp/v201705/Extensions/AddSitelinks.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Extensions/AddSitelinksUsingFeeds.cs b/examples/AdWords/CSharp/v201705/Extensions/AddSitelinksUsingFeeds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Extensions/AddSitelinksUsingFeeds.cs rename to examples/AdWords/CSharp/v201705/Extensions/AddSitelinksUsingFeeds.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Migration/MigrateToExtensionSettings.cs b/examples/AdWords/CSharp/v201705/Migration/MigrateToExtensionSettings.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Migration/MigrateToExtensionSettings.cs rename to examples/AdWords/CSharp/v201705/Migration/MigrateToExtensionSettings.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Miscellaneous/GetAllVideosAndImages.cs b/examples/AdWords/CSharp/v201705/Miscellaneous/GetAllVideosAndImages.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Miscellaneous/GetAllVideosAndImages.cs rename to examples/AdWords/CSharp/v201705/Miscellaneous/GetAllVideosAndImages.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Miscellaneous/UploadImage.cs b/examples/AdWords/CSharp/v201705/Miscellaneous/UploadImage.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Miscellaneous/UploadImage.cs rename to examples/AdWords/CSharp/v201705/Miscellaneous/UploadImage.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Miscellaneous/UploadMediaBundle.cs b/examples/AdWords/CSharp/v201705/Miscellaneous/UploadMediaBundle.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Miscellaneous/UploadMediaBundle.cs rename to examples/AdWords/CSharp/v201705/Miscellaneous/UploadMediaBundle.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Optimization/EstimateKeywordTraffic.cs b/examples/AdWords/CSharp/v201705/Optimization/EstimateKeywordTraffic.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Optimization/EstimateKeywordTraffic.cs rename to examples/AdWords/CSharp/v201705/Optimization/EstimateKeywordTraffic.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Optimization/GetAdGroupBidSimulations.cs b/examples/AdWords/CSharp/v201705/Optimization/GetAdGroupBidSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Optimization/GetAdGroupBidSimulations.cs rename to examples/AdWords/CSharp/v201705/Optimization/GetAdGroupBidSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.cs b/examples/AdWords/CSharp/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.cs rename to examples/AdWords/CSharp/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Optimization/GetKeywordBidSimulations.cs b/examples/AdWords/CSharp/v201705/Optimization/GetKeywordBidSimulations.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Optimization/GetKeywordBidSimulations.cs rename to examples/AdWords/CSharp/v201705/Optimization/GetKeywordBidSimulations.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Optimization/GetKeywordIdeas.cs b/examples/AdWords/CSharp/v201705/Optimization/GetKeywordIdeas.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Optimization/GetKeywordIdeas.cs rename to examples/AdWords/CSharp/v201705/Optimization/GetKeywordIdeas.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Remarketing/AddAudience.cs b/examples/AdWords/CSharp/v201705/Remarketing/AddAudience.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Remarketing/AddAudience.cs rename to examples/AdWords/CSharp/v201705/Remarketing/AddAudience.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Remarketing/AddConversionTracker.cs b/examples/AdWords/CSharp/v201705/Remarketing/AddConversionTracker.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Remarketing/AddConversionTracker.cs rename to examples/AdWords/CSharp/v201705/Remarketing/AddConversionTracker.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Remarketing/AddCrmBasedUserList.cs b/examples/AdWords/CSharp/v201705/Remarketing/AddCrmBasedUserList.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Remarketing/AddCrmBasedUserList.cs rename to examples/AdWords/CSharp/v201705/Remarketing/AddCrmBasedUserList.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Remarketing/AddRuleBasedRemarketingList.cs b/examples/AdWords/CSharp/v201705/Remarketing/AddRuleBasedRemarketingList.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Remarketing/AddRuleBasedRemarketingList.cs rename to examples/AdWords/CSharp/v201705/Remarketing/AddRuleBasedRemarketingList.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Remarketing/UploadOfflineCallConversions.cs b/examples/AdWords/CSharp/v201705/Remarketing/UploadOfflineCallConversions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Remarketing/UploadOfflineCallConversions.cs rename to examples/AdWords/CSharp/v201705/Remarketing/UploadOfflineCallConversions.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Remarketing/UploadOfflineConversions.cs b/examples/AdWords/CSharp/v201705/Remarketing/UploadOfflineConversions.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Remarketing/UploadOfflineConversions.cs rename to examples/AdWords/CSharp/v201705/Remarketing/UploadOfflineConversions.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithAwql.cs b/examples/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithAwql.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithAwql.cs rename to examples/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithAwql.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithSelector.cs b/examples/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithSelector.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithSelector.cs rename to examples/AdWords/CSharp/v201705/Reporting/DownloadCriteriaReportWithSelector.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Reporting/GetReportFields.cs b/examples/AdWords/CSharp/v201705/Reporting/GetReportFields.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Reporting/GetReportFields.cs rename to examples/AdWords/CSharp/v201705/Reporting/GetReportFields.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Reporting/ParallelReportDownload.cs b/examples/AdWords/CSharp/v201705/Reporting/ParallelReportDownload.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Reporting/ParallelReportDownload.cs rename to examples/AdWords/CSharp/v201705/Reporting/ParallelReportDownload.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportResults.cs b/examples/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportResults.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportResults.cs rename to examples/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportResults.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportToPoco.cs b/examples/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportToPoco.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportToPoco.cs rename to examples/AdWords/CSharp/v201705/Reporting/StreamCriteriaReportToPoco.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Reporting/StreamReportToPredefinedReportRowType.cs b/examples/AdWords/CSharp/v201705/Reporting/StreamReportToPredefinedReportRowType.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Reporting/StreamReportToPredefinedReportRowType.cs rename to examples/AdWords/CSharp/v201705/Reporting/StreamReportToPredefinedReportRowType.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductPartitionTree.cs b/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductPartitionTree.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductPartitionTree.cs rename to examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductPartitionTree.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductScope.cs b/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductScope.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductScope.cs rename to examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddProductScope.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaign.cs b/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaign.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaign.cs rename to examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaign.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs b/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs rename to examples/AdWords/CSharp/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.cs b/examples/AdWords/CSharp/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.cs rename to examples/AdWords/CSharp/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs b/examples/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs rename to examples/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/BudgetUtilizationReport.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/README.md b/examples/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/README.md similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/README.md rename to examples/AdWords/CSharp/v201705/Solutions/BudgetUtilizationReport/README.md diff --git a/adwords/examples/AdWords/CSharp/v201705/Solutions/GetNewKeywords/GetNewKeywords.cs b/examples/AdWords/CSharp/v201705/Solutions/GetNewKeywords/GetNewKeywords.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Solutions/GetNewKeywords/GetNewKeywords.cs rename to examples/AdWords/CSharp/v201705/Solutions/GetNewKeywords/GetNewKeywords.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Solutions/GetNewKeywords/README.md b/examples/AdWords/CSharp/v201705/Solutions/GetNewKeywords/README.md similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Solutions/GetNewKeywords/README.md rename to examples/AdWords/CSharp/v201705/Solutions/GetNewKeywords/README.md diff --git a/adwords/examples/AdWords/CSharp/v201705/Targeting/AddCampaignTargetingCriteria.cs b/examples/AdWords/CSharp/v201705/Targeting/AddCampaignTargetingCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Targeting/AddCampaignTargetingCriteria.cs rename to examples/AdWords/CSharp/v201705/Targeting/AddCampaignTargetingCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Targeting/GetCampaignTargetingCriteria.cs b/examples/AdWords/CSharp/v201705/Targeting/GetCampaignTargetingCriteria.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Targeting/GetCampaignTargetingCriteria.cs rename to examples/AdWords/CSharp/v201705/Targeting/GetCampaignTargetingCriteria.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Targeting/GetTargetableLanguagesAndCarriers.cs b/examples/AdWords/CSharp/v201705/Targeting/GetTargetableLanguagesAndCarriers.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Targeting/GetTargetableLanguagesAndCarriers.cs rename to examples/AdWords/CSharp/v201705/Targeting/GetTargetableLanguagesAndCarriers.cs diff --git a/adwords/examples/AdWords/CSharp/v201705/Targeting/LookupLocation.cs b/examples/AdWords/CSharp/v201705/Targeting/LookupLocation.cs similarity index 100% rename from adwords/examples/AdWords/CSharp/v201705/Targeting/LookupLocation.cs rename to examples/AdWords/CSharp/v201705/Targeting/LookupLocation.cs diff --git a/adwords/examples/AdWords/Vb/AdWords.Examples.VB.vbproj b/examples/AdWords/Vb/AdWords.Examples.VB.vbproj similarity index 100% rename from adwords/examples/AdWords/Vb/AdWords.Examples.VB.vbproj rename to examples/AdWords/Vb/AdWords.Examples.VB.vbproj diff --git a/adwords/examples/AdWords/Vb/App.config b/examples/AdWords/Vb/App.config similarity index 100% rename from adwords/examples/AdWords/Vb/App.config rename to examples/AdWords/Vb/App.config diff --git a/adwords/examples/AdWords/Vb/ExampleBase.vb b/examples/AdWords/Vb/ExampleBase.vb similarity index 100% rename from adwords/examples/AdWords/Vb/ExampleBase.vb rename to examples/AdWords/Vb/ExampleBase.vb diff --git a/adwords/examples/AdWords/Vb/ExampleUtilities.vb b/examples/AdWords/Vb/ExampleUtilities.vb similarity index 100% rename from adwords/examples/AdWords/Vb/ExampleUtilities.vb rename to examples/AdWords/Vb/ExampleUtilities.vb diff --git a/adwords/examples/AdWords/Vb/Program.vb b/examples/AdWords/Vb/Program.vb similarity index 100% rename from adwords/examples/AdWords/Vb/Program.vb rename to examples/AdWords/Vb/Program.vb diff --git a/adwords/examples/AdWords/Vb/Properties/AssemblyInfo.vb b/examples/AdWords/Vb/Properties/AssemblyInfo.vb similarity index 100% rename from adwords/examples/AdWords/Vb/Properties/AssemblyInfo.vb rename to examples/AdWords/Vb/Properties/AssemblyInfo.vb diff --git a/adwords/examples/AdWords/Vb/Properties/Properties.vb b/examples/AdWords/Vb/Properties/Properties.vb similarity index 100% rename from adwords/examples/AdWords/Vb/Properties/Properties.vb rename to examples/AdWords/Vb/Properties/Properties.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AccountManagement/AcceptServiceLink.vb b/examples/AdWords/Vb/v201609/AccountManagement/AcceptServiceLink.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AccountManagement/AcceptServiceLink.vb rename to examples/AdWords/Vb/v201609/AccountManagement/AcceptServiceLink.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AccountManagement/CreateAccount.vb b/examples/AdWords/Vb/v201609/AccountManagement/CreateAccount.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AccountManagement/CreateAccount.vb rename to examples/AdWords/Vb/v201609/AccountManagement/CreateAccount.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AccountManagement/GetAccountChanges.vb b/examples/AdWords/Vb/v201609/AccountManagement/GetAccountChanges.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AccountManagement/GetAccountChanges.vb rename to examples/AdWords/Vb/v201609/AccountManagement/GetAccountChanges.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AccountManagement/GetAccountHierarchy.vb b/examples/AdWords/Vb/v201609/AccountManagement/GetAccountHierarchy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AccountManagement/GetAccountHierarchy.vb rename to examples/AdWords/Vb/v201609/AccountManagement/GetAccountHierarchy.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddAdCustomizers.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/AddAdCustomizers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddAdCustomizers.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/AddAdCustomizers.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddAdGroupBidModifier.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/AddAdGroupBidModifier.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddAdGroupBidModifier.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/AddAdGroupBidModifier.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddClickToDownloadAd.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/AddClickToDownloadAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddClickToDownloadAd.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/AddClickToDownloadAd.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddHtml5Ad.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/AddHtml5Ad.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddHtml5Ad.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/AddHtml5Ad.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddResponsiveDisplayAd.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/AddResponsiveDisplayAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddResponsiveDisplayAd.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/AddResponsiveDisplayAd.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddUniversalAppCampaign.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/AddUniversalAppCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/AddUniversalAppCampaign.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/AddUniversalAppCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/GetAdGroupBidModifiers.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/GetAdGroupBidModifiers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/GetAdGroupBidModifiers.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/GetAdGroupBidModifiers.vb diff --git a/adwords/examples/AdWords/Vb/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.vb b/examples/AdWords/Vb/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.vb rename to examples/AdWords/Vb/v201609/AdvancedOperations/UsePortfolioBiddingStrategy.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/AddAdGroupDemographicCriteria.vb b/examples/AdWords/Vb/v201609/BasicOperations/AddAdGroupDemographicCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/AddAdGroupDemographicCriteria.vb rename to examples/AdWords/Vb/v201609/BasicOperations/AddAdGroupDemographicCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/AddAdGroups.vb b/examples/AdWords/Vb/v201609/BasicOperations/AddAdGroups.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/AddAdGroups.vb rename to examples/AdWords/Vb/v201609/BasicOperations/AddAdGroups.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/AddCampaigns.vb b/examples/AdWords/Vb/v201609/BasicOperations/AddCampaigns.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/AddCampaigns.vb rename to examples/AdWords/Vb/v201609/BasicOperations/AddCampaigns.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/AddExpandedTextAds.vb b/examples/AdWords/Vb/v201609/BasicOperations/AddExpandedTextAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/AddExpandedTextAds.vb rename to examples/AdWords/Vb/v201609/BasicOperations/AddExpandedTextAds.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/AddKeywords.vb b/examples/AdWords/Vb/v201609/BasicOperations/AddKeywords.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/AddKeywords.vb rename to examples/AdWords/Vb/v201609/BasicOperations/AddKeywords.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/GetAdGroups.vb b/examples/AdWords/Vb/v201609/BasicOperations/GetAdGroups.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/GetAdGroups.vb rename to examples/AdWords/Vb/v201609/BasicOperations/GetAdGroups.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/GetCampaigns.vb b/examples/AdWords/Vb/v201609/BasicOperations/GetCampaigns.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/GetCampaigns.vb rename to examples/AdWords/Vb/v201609/BasicOperations/GetCampaigns.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/GetCampaignsWithAwql.vb b/examples/AdWords/Vb/v201609/BasicOperations/GetCampaignsWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/GetCampaignsWithAwql.vb rename to examples/AdWords/Vb/v201609/BasicOperations/GetCampaignsWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/GetExpandedTextAds.vb b/examples/AdWords/Vb/v201609/BasicOperations/GetExpandedTextAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/GetExpandedTextAds.vb rename to examples/AdWords/Vb/v201609/BasicOperations/GetExpandedTextAds.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/GetKeywords.vb b/examples/AdWords/Vb/v201609/BasicOperations/GetKeywords.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/GetKeywords.vb rename to examples/AdWords/Vb/v201609/BasicOperations/GetKeywords.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/GetTextAds.vb b/examples/AdWords/Vb/v201609/BasicOperations/GetTextAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/GetTextAds.vb rename to examples/AdWords/Vb/v201609/BasicOperations/GetTextAds.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/PauseAd.vb b/examples/AdWords/Vb/v201609/BasicOperations/PauseAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/PauseAd.vb rename to examples/AdWords/Vb/v201609/BasicOperations/PauseAd.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/RemoveAd.vb b/examples/AdWords/Vb/v201609/BasicOperations/RemoveAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/RemoveAd.vb rename to examples/AdWords/Vb/v201609/BasicOperations/RemoveAd.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/RemoveAdGroup.vb b/examples/AdWords/Vb/v201609/BasicOperations/RemoveAdGroup.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/RemoveAdGroup.vb rename to examples/AdWords/Vb/v201609/BasicOperations/RemoveAdGroup.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/RemoveCampaign.vb b/examples/AdWords/Vb/v201609/BasicOperations/RemoveCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/RemoveCampaign.vb rename to examples/AdWords/Vb/v201609/BasicOperations/RemoveCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/RemoveKeyword.vb b/examples/AdWords/Vb/v201609/BasicOperations/RemoveKeyword.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/RemoveKeyword.vb rename to examples/AdWords/Vb/v201609/BasicOperations/RemoveKeyword.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/UpdateAdGroup.vb b/examples/AdWords/Vb/v201609/BasicOperations/UpdateAdGroup.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/UpdateAdGroup.vb rename to examples/AdWords/Vb/v201609/BasicOperations/UpdateAdGroup.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/UpdateCampaign.vb b/examples/AdWords/Vb/v201609/BasicOperations/UpdateCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/UpdateCampaign.vb rename to examples/AdWords/Vb/v201609/BasicOperations/UpdateCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201609/BasicOperations/UpdateKeyword.vb b/examples/AdWords/Vb/v201609/BasicOperations/UpdateKeyword.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/BasicOperations/UpdateKeyword.vb rename to examples/AdWords/Vb/v201609/BasicOperations/UpdateKeyword.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddCampaignLabels.vb b/examples/AdWords/Vb/v201609/CampaignManagement/AddCampaignLabels.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddCampaignLabels.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/AddCampaignLabels.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb b/examples/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb b/examples/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddDraft.vb b/examples/AdWords/Vb/v201609/CampaignManagement/AddDraft.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddDraft.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/AddDraft.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb b/examples/AdWords/Vb/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddTrial.vb b/examples/AdWords/Vb/v201609/CampaignManagement/AddTrial.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/AddTrial.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/AddTrial.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAds.vb b/examples/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAds.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAds.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb b/examples/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/GetCampaignsByLabel.vb b/examples/AdWords/Vb/v201609/CampaignManagement/GetCampaignsByLabel.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/GetCampaignsByLabel.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/GetCampaignsByLabel.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/GraduateTrial.vb b/examples/AdWords/Vb/v201609/CampaignManagement/GraduateTrial.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/GraduateTrial.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/GraduateTrial.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/SetAdParameters.vb b/examples/AdWords/Vb/v201609/CampaignManagement/SetAdParameters.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/SetAdParameters.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/SetAdParameters.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/SetBidModifier.vb b/examples/AdWords/Vb/v201609/CampaignManagement/SetBidModifier.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/SetBidModifier.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/SetBidModifier.vb diff --git a/adwords/examples/AdWords/Vb/v201609/CampaignManagement/ValidateTextAd.vb b/examples/AdWords/Vb/v201609/CampaignManagement/ValidateTextAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/CampaignManagement/ValidateTextAd.vb rename to examples/AdWords/Vb/v201609/CampaignManagement/ValidateTextAd.vb diff --git a/adwords/examples/AdWords/Vb/v201609/ErrorHandling/HandlePartialFailures.vb b/examples/AdWords/Vb/v201609/ErrorHandling/HandlePartialFailures.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/ErrorHandling/HandlePartialFailures.vb rename to examples/AdWords/Vb/v201609/ErrorHandling/HandlePartialFailures.vb diff --git a/adwords/examples/AdWords/Vb/v201609/ErrorHandling/HandlePolicyViolationError.vb b/examples/AdWords/Vb/v201609/ErrorHandling/HandlePolicyViolationError.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/ErrorHandling/HandlePolicyViolationError.vb rename to examples/AdWords/Vb/v201609/ErrorHandling/HandlePolicyViolationError.vb diff --git a/adwords/examples/AdWords/Vb/v201609/ErrorHandling/HandleRateExceededError.vb b/examples/AdWords/Vb/v201609/ErrorHandling/HandleRateExceededError.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/ErrorHandling/HandleRateExceededError.vb rename to examples/AdWords/Vb/v201609/ErrorHandling/HandleRateExceededError.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.vb b/examples/AdWords/Vb/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.vb rename to examples/AdWords/Vb/v201609/Extensions/AddGoogleMyBusinessLocationExtensions.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Extensions/AddPrices.vb b/examples/AdWords/Vb/v201609/Extensions/AddPrices.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Extensions/AddPrices.vb rename to examples/AdWords/Vb/v201609/Extensions/AddPrices.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Extensions/AddSitelinks.vb b/examples/AdWords/Vb/v201609/Extensions/AddSitelinks.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Extensions/AddSitelinks.vb rename to examples/AdWords/Vb/v201609/Extensions/AddSitelinks.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Extensions/AddSitelinksUsingFeeds.vb b/examples/AdWords/Vb/v201609/Extensions/AddSitelinksUsingFeeds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Extensions/AddSitelinksUsingFeeds.vb rename to examples/AdWords/Vb/v201609/Extensions/AddSitelinksUsingFeeds.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Migration/MigrateToExtensionSettings.vb b/examples/AdWords/Vb/v201609/Migration/MigrateToExtensionSettings.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Migration/MigrateToExtensionSettings.vb rename to examples/AdWords/Vb/v201609/Migration/MigrateToExtensionSettings.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Miscellaneous/GetAllVideosAndImages.vb b/examples/AdWords/Vb/v201609/Miscellaneous/GetAllVideosAndImages.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Miscellaneous/GetAllVideosAndImages.vb rename to examples/AdWords/Vb/v201609/Miscellaneous/GetAllVideosAndImages.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Miscellaneous/UploadImage.vb b/examples/AdWords/Vb/v201609/Miscellaneous/UploadImage.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Miscellaneous/UploadImage.vb rename to examples/AdWords/Vb/v201609/Miscellaneous/UploadImage.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Miscellaneous/UploadMediaBundle.vb b/examples/AdWords/Vb/v201609/Miscellaneous/UploadMediaBundle.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Miscellaneous/UploadMediaBundle.vb rename to examples/AdWords/Vb/v201609/Miscellaneous/UploadMediaBundle.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Optimization/EstimateKeywordTraffic.vb b/examples/AdWords/Vb/v201609/Optimization/EstimateKeywordTraffic.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Optimization/EstimateKeywordTraffic.vb rename to examples/AdWords/Vb/v201609/Optimization/EstimateKeywordTraffic.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Optimization/GetAdGroupBidSimulations.vb b/examples/AdWords/Vb/v201609/Optimization/GetAdGroupBidSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Optimization/GetAdGroupBidSimulations.vb rename to examples/AdWords/Vb/v201609/Optimization/GetAdGroupBidSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.vb b/examples/AdWords/Vb/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.vb rename to examples/AdWords/Vb/v201609/Optimization/GetCampaignCriterionBidModifierSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Optimization/GetKeywordBidSimulations.vb b/examples/AdWords/Vb/v201609/Optimization/GetKeywordBidSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Optimization/GetKeywordBidSimulations.vb rename to examples/AdWords/Vb/v201609/Optimization/GetKeywordBidSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Optimization/GetKeywordIdeas.vb b/examples/AdWords/Vb/v201609/Optimization/GetKeywordIdeas.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Optimization/GetKeywordIdeas.vb rename to examples/AdWords/Vb/v201609/Optimization/GetKeywordIdeas.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Remarketing/AddAudience.vb b/examples/AdWords/Vb/v201609/Remarketing/AddAudience.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Remarketing/AddAudience.vb rename to examples/AdWords/Vb/v201609/Remarketing/AddAudience.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Remarketing/AddConversionTracker.vb b/examples/AdWords/Vb/v201609/Remarketing/AddConversionTracker.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Remarketing/AddConversionTracker.vb rename to examples/AdWords/Vb/v201609/Remarketing/AddConversionTracker.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Remarketing/AddCrmBasedUserList.vb b/examples/AdWords/Vb/v201609/Remarketing/AddCrmBasedUserList.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Remarketing/AddCrmBasedUserList.vb rename to examples/AdWords/Vb/v201609/Remarketing/AddCrmBasedUserList.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Remarketing/AddRuleBasedRemarketingList.vb b/examples/AdWords/Vb/v201609/Remarketing/AddRuleBasedRemarketingList.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Remarketing/AddRuleBasedRemarketingList.vb rename to examples/AdWords/Vb/v201609/Remarketing/AddRuleBasedRemarketingList.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Remarketing/UploadOfflineCallConversions.vb b/examples/AdWords/Vb/v201609/Remarketing/UploadOfflineCallConversions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Remarketing/UploadOfflineCallConversions.vb rename to examples/AdWords/Vb/v201609/Remarketing/UploadOfflineCallConversions.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Remarketing/UploadOfflineConversions.vb b/examples/AdWords/Vb/v201609/Remarketing/UploadOfflineConversions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Remarketing/UploadOfflineConversions.vb rename to examples/AdWords/Vb/v201609/Remarketing/UploadOfflineConversions.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Reporting/DownloadCriteriaReport.vb b/examples/AdWords/Vb/v201609/Reporting/DownloadCriteriaReport.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Reporting/DownloadCriteriaReport.vb rename to examples/AdWords/Vb/v201609/Reporting/DownloadCriteriaReport.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Reporting/DownloadCriteriaReportWithAwql.vb b/examples/AdWords/Vb/v201609/Reporting/DownloadCriteriaReportWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Reporting/DownloadCriteriaReportWithAwql.vb rename to examples/AdWords/Vb/v201609/Reporting/DownloadCriteriaReportWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Reporting/GetReportFields.vb b/examples/AdWords/Vb/v201609/Reporting/GetReportFields.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Reporting/GetReportFields.vb rename to examples/AdWords/Vb/v201609/Reporting/GetReportFields.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Reporting/StreamCriteriaReportResults.vb b/examples/AdWords/Vb/v201609/Reporting/StreamCriteriaReportResults.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Reporting/StreamCriteriaReportResults.vb rename to examples/AdWords/Vb/v201609/Reporting/StreamCriteriaReportResults.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Reporting/StreamCriteriaReportToPoco.vb b/examples/AdWords/Vb/v201609/Reporting/StreamCriteriaReportToPoco.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Reporting/StreamCriteriaReportToPoco.vb rename to examples/AdWords/Vb/v201609/Reporting/StreamCriteriaReportToPoco.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Reporting/StreamReportToPredefinedReportRowType.vb b/examples/AdWords/Vb/v201609/Reporting/StreamReportToPredefinedReportRowType.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Reporting/StreamReportToPredefinedReportRowType.vb rename to examples/AdWords/Vb/v201609/Reporting/StreamReportToPredefinedReportRowType.vb diff --git a/adwords/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddProductPartitionTree.vb b/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddProductPartitionTree.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddProductPartitionTree.vb rename to examples/AdWords/Vb/v201609/ShoppingCampaigns/AddProductPartitionTree.vb diff --git a/adwords/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddProductScope.vb b/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddProductScope.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddProductScope.vb rename to examples/AdWords/Vb/v201609/ShoppingCampaigns/AddProductScope.vb diff --git a/adwords/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddShoppingCampaign.vb b/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddShoppingCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/ShoppingCampaigns/AddShoppingCampaign.vb rename to examples/AdWords/Vb/v201609/ShoppingCampaigns/AddShoppingCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.vb b/examples/AdWords/Vb/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.vb rename to examples/AdWords/Vb/v201609/ShoppingCampaigns/GetProductCategoryTaxonomy.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Targeting/AddCampaignTargetingCriteria.vb b/examples/AdWords/Vb/v201609/Targeting/AddCampaignTargetingCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Targeting/AddCampaignTargetingCriteria.vb rename to examples/AdWords/Vb/v201609/Targeting/AddCampaignTargetingCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Targeting/GetCampaignTargetingCriteria.vb b/examples/AdWords/Vb/v201609/Targeting/GetCampaignTargetingCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Targeting/GetCampaignTargetingCriteria.vb rename to examples/AdWords/Vb/v201609/Targeting/GetCampaignTargetingCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Targeting/GetTargetableLanguagesAndCarriers.vb b/examples/AdWords/Vb/v201609/Targeting/GetTargetableLanguagesAndCarriers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Targeting/GetTargetableLanguagesAndCarriers.vb rename to examples/AdWords/Vb/v201609/Targeting/GetTargetableLanguagesAndCarriers.vb diff --git a/adwords/examples/AdWords/Vb/v201609/Targeting/LookupLocation.vb b/examples/AdWords/Vb/v201609/Targeting/LookupLocation.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201609/Targeting/LookupLocation.vb rename to examples/AdWords/Vb/v201609/Targeting/LookupLocation.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AccountManagement/AcceptServiceLink.vb b/examples/AdWords/Vb/v201702/AccountManagement/AcceptServiceLink.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AccountManagement/AcceptServiceLink.vb rename to examples/AdWords/Vb/v201702/AccountManagement/AcceptServiceLink.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AccountManagement/CreateAccount.vb b/examples/AdWords/Vb/v201702/AccountManagement/CreateAccount.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AccountManagement/CreateAccount.vb rename to examples/AdWords/Vb/v201702/AccountManagement/CreateAccount.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AccountManagement/GetAccountChanges.vb b/examples/AdWords/Vb/v201702/AccountManagement/GetAccountChanges.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AccountManagement/GetAccountChanges.vb rename to examples/AdWords/Vb/v201702/AccountManagement/GetAccountChanges.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AccountManagement/GetAccountHierarchy.vb b/examples/AdWords/Vb/v201702/AccountManagement/GetAccountHierarchy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AccountManagement/GetAccountHierarchy.vb rename to examples/AdWords/Vb/v201702/AccountManagement/GetAccountHierarchy.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddAdCustomizers.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/AddAdCustomizers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddAdCustomizers.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/AddAdCustomizers.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddAdGroupBidModifier.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/AddAdGroupBidModifier.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddAdGroupBidModifier.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/AddAdGroupBidModifier.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddClickToDownloadAd.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/AddClickToDownloadAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddClickToDownloadAd.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/AddClickToDownloadAd.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddHtml5Ad.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/AddHtml5Ad.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddHtml5Ad.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/AddHtml5Ad.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddResponsiveDisplayAd.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/AddResponsiveDisplayAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddResponsiveDisplayAd.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/AddResponsiveDisplayAd.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddUniversalAppCampaign.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/AddUniversalAppCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/AddUniversalAppCampaign.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/AddUniversalAppCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/GetAdGroupBidModifiers.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/GetAdGroupBidModifiers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/GetAdGroupBidModifiers.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/GetAdGroupBidModifiers.vb diff --git a/adwords/examples/AdWords/Vb/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.vb b/examples/AdWords/Vb/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.vb rename to examples/AdWords/Vb/v201702/AdvancedOperations/UsePortfolioBiddingStrategy.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/AddAdGroupDemographicCriteria.vb b/examples/AdWords/Vb/v201702/BasicOperations/AddAdGroupDemographicCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/AddAdGroupDemographicCriteria.vb rename to examples/AdWords/Vb/v201702/BasicOperations/AddAdGroupDemographicCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/AddAdGroups.vb b/examples/AdWords/Vb/v201702/BasicOperations/AddAdGroups.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/AddAdGroups.vb rename to examples/AdWords/Vb/v201702/BasicOperations/AddAdGroups.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/AddCampaigns.vb b/examples/AdWords/Vb/v201702/BasicOperations/AddCampaigns.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/AddCampaigns.vb rename to examples/AdWords/Vb/v201702/BasicOperations/AddCampaigns.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/AddExpandedTextAds.vb b/examples/AdWords/Vb/v201702/BasicOperations/AddExpandedTextAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/AddExpandedTextAds.vb rename to examples/AdWords/Vb/v201702/BasicOperations/AddExpandedTextAds.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/AddKeywords.vb b/examples/AdWords/Vb/v201702/BasicOperations/AddKeywords.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/AddKeywords.vb rename to examples/AdWords/Vb/v201702/BasicOperations/AddKeywords.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/GetAdGroups.vb b/examples/AdWords/Vb/v201702/BasicOperations/GetAdGroups.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/GetAdGroups.vb rename to examples/AdWords/Vb/v201702/BasicOperations/GetAdGroups.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/GetCampaigns.vb b/examples/AdWords/Vb/v201702/BasicOperations/GetCampaigns.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/GetCampaigns.vb rename to examples/AdWords/Vb/v201702/BasicOperations/GetCampaigns.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/GetCampaignsWithAwql.vb b/examples/AdWords/Vb/v201702/BasicOperations/GetCampaignsWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/GetCampaignsWithAwql.vb rename to examples/AdWords/Vb/v201702/BasicOperations/GetCampaignsWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/GetExpandedTextAds.vb b/examples/AdWords/Vb/v201702/BasicOperations/GetExpandedTextAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/GetExpandedTextAds.vb rename to examples/AdWords/Vb/v201702/BasicOperations/GetExpandedTextAds.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/GetKeywords.vb b/examples/AdWords/Vb/v201702/BasicOperations/GetKeywords.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/GetKeywords.vb rename to examples/AdWords/Vb/v201702/BasicOperations/GetKeywords.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/GetTextAds.vb b/examples/AdWords/Vb/v201702/BasicOperations/GetTextAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/GetTextAds.vb rename to examples/AdWords/Vb/v201702/BasicOperations/GetTextAds.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/PauseAd.vb b/examples/AdWords/Vb/v201702/BasicOperations/PauseAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/PauseAd.vb rename to examples/AdWords/Vb/v201702/BasicOperations/PauseAd.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/RemoveAd.vb b/examples/AdWords/Vb/v201702/BasicOperations/RemoveAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/RemoveAd.vb rename to examples/AdWords/Vb/v201702/BasicOperations/RemoveAd.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/RemoveAdGroup.vb b/examples/AdWords/Vb/v201702/BasicOperations/RemoveAdGroup.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/RemoveAdGroup.vb rename to examples/AdWords/Vb/v201702/BasicOperations/RemoveAdGroup.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/RemoveCampaign.vb b/examples/AdWords/Vb/v201702/BasicOperations/RemoveCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/RemoveCampaign.vb rename to examples/AdWords/Vb/v201702/BasicOperations/RemoveCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/RemoveKeyword.vb b/examples/AdWords/Vb/v201702/BasicOperations/RemoveKeyword.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/RemoveKeyword.vb rename to examples/AdWords/Vb/v201702/BasicOperations/RemoveKeyword.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/UpdateAdGroup.vb b/examples/AdWords/Vb/v201702/BasicOperations/UpdateAdGroup.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/UpdateAdGroup.vb rename to examples/AdWords/Vb/v201702/BasicOperations/UpdateAdGroup.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/UpdateCampaign.vb b/examples/AdWords/Vb/v201702/BasicOperations/UpdateCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/UpdateCampaign.vb rename to examples/AdWords/Vb/v201702/BasicOperations/UpdateCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201702/BasicOperations/UpdateKeyword.vb b/examples/AdWords/Vb/v201702/BasicOperations/UpdateKeyword.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/BasicOperations/UpdateKeyword.vb rename to examples/AdWords/Vb/v201702/BasicOperations/UpdateKeyword.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddCampaignLabels.vb b/examples/AdWords/Vb/v201702/CampaignManagement/AddCampaignLabels.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddCampaignLabels.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/AddCampaignLabels.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb b/examples/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb b/examples/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddDraft.vb b/examples/AdWords/Vb/v201702/CampaignManagement/AddDraft.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddDraft.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/AddDraft.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb b/examples/AdWords/Vb/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddTrial.vb b/examples/AdWords/Vb/v201702/CampaignManagement/AddTrial.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/AddTrial.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/AddTrial.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAds.vb b/examples/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAds.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAds.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb b/examples/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/GetCampaignsByLabel.vb b/examples/AdWords/Vb/v201702/CampaignManagement/GetCampaignsByLabel.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/GetCampaignsByLabel.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/GetCampaignsByLabel.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/GraduateTrial.vb b/examples/AdWords/Vb/v201702/CampaignManagement/GraduateTrial.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/GraduateTrial.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/GraduateTrial.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/SetAdParameters.vb b/examples/AdWords/Vb/v201702/CampaignManagement/SetAdParameters.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/SetAdParameters.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/SetAdParameters.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/SetBidModifier.vb b/examples/AdWords/Vb/v201702/CampaignManagement/SetBidModifier.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/SetBidModifier.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/SetBidModifier.vb diff --git a/adwords/examples/AdWords/Vb/v201702/CampaignManagement/ValidateTextAd.vb b/examples/AdWords/Vb/v201702/CampaignManagement/ValidateTextAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/CampaignManagement/ValidateTextAd.vb rename to examples/AdWords/Vb/v201702/CampaignManagement/ValidateTextAd.vb diff --git a/adwords/examples/AdWords/Vb/v201702/ErrorHandling/HandlePartialFailures.vb b/examples/AdWords/Vb/v201702/ErrorHandling/HandlePartialFailures.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/ErrorHandling/HandlePartialFailures.vb rename to examples/AdWords/Vb/v201702/ErrorHandling/HandlePartialFailures.vb diff --git a/adwords/examples/AdWords/Vb/v201702/ErrorHandling/HandlePolicyViolationError.vb b/examples/AdWords/Vb/v201702/ErrorHandling/HandlePolicyViolationError.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/ErrorHandling/HandlePolicyViolationError.vb rename to examples/AdWords/Vb/v201702/ErrorHandling/HandlePolicyViolationError.vb diff --git a/adwords/examples/AdWords/Vb/v201702/ErrorHandling/HandleRateExceededError.vb b/examples/AdWords/Vb/v201702/ErrorHandling/HandleRateExceededError.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/ErrorHandling/HandleRateExceededError.vb rename to examples/AdWords/Vb/v201702/ErrorHandling/HandleRateExceededError.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.vb b/examples/AdWords/Vb/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.vb rename to examples/AdWords/Vb/v201702/Extensions/AddGoogleMyBusinessLocationExtensions.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Extensions/AddPrices.vb b/examples/AdWords/Vb/v201702/Extensions/AddPrices.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Extensions/AddPrices.vb rename to examples/AdWords/Vb/v201702/Extensions/AddPrices.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Extensions/AddSitelinks.vb b/examples/AdWords/Vb/v201702/Extensions/AddSitelinks.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Extensions/AddSitelinks.vb rename to examples/AdWords/Vb/v201702/Extensions/AddSitelinks.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Extensions/AddSitelinksUsingFeeds.vb b/examples/AdWords/Vb/v201702/Extensions/AddSitelinksUsingFeeds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Extensions/AddSitelinksUsingFeeds.vb rename to examples/AdWords/Vb/v201702/Extensions/AddSitelinksUsingFeeds.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Migration/MigrateToExtensionSettings.vb b/examples/AdWords/Vb/v201702/Migration/MigrateToExtensionSettings.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Migration/MigrateToExtensionSettings.vb rename to examples/AdWords/Vb/v201702/Migration/MigrateToExtensionSettings.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Miscellaneous/GetAllVideosAndImages.vb b/examples/AdWords/Vb/v201702/Miscellaneous/GetAllVideosAndImages.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Miscellaneous/GetAllVideosAndImages.vb rename to examples/AdWords/Vb/v201702/Miscellaneous/GetAllVideosAndImages.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Miscellaneous/UploadImage.vb b/examples/AdWords/Vb/v201702/Miscellaneous/UploadImage.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Miscellaneous/UploadImage.vb rename to examples/AdWords/Vb/v201702/Miscellaneous/UploadImage.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Miscellaneous/UploadMediaBundle.vb b/examples/AdWords/Vb/v201702/Miscellaneous/UploadMediaBundle.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Miscellaneous/UploadMediaBundle.vb rename to examples/AdWords/Vb/v201702/Miscellaneous/UploadMediaBundle.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Optimization/EstimateKeywordTraffic.vb b/examples/AdWords/Vb/v201702/Optimization/EstimateKeywordTraffic.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Optimization/EstimateKeywordTraffic.vb rename to examples/AdWords/Vb/v201702/Optimization/EstimateKeywordTraffic.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Optimization/GetAdGroupBidSimulations.vb b/examples/AdWords/Vb/v201702/Optimization/GetAdGroupBidSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Optimization/GetAdGroupBidSimulations.vb rename to examples/AdWords/Vb/v201702/Optimization/GetAdGroupBidSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.vb b/examples/AdWords/Vb/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.vb rename to examples/AdWords/Vb/v201702/Optimization/GetCampaignCriterionBidModifierSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Optimization/GetKeywordBidSimulations.vb b/examples/AdWords/Vb/v201702/Optimization/GetKeywordBidSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Optimization/GetKeywordBidSimulations.vb rename to examples/AdWords/Vb/v201702/Optimization/GetKeywordBidSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Optimization/GetKeywordIdeas.vb b/examples/AdWords/Vb/v201702/Optimization/GetKeywordIdeas.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Optimization/GetKeywordIdeas.vb rename to examples/AdWords/Vb/v201702/Optimization/GetKeywordIdeas.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Remarketing/AddAudience.vb b/examples/AdWords/Vb/v201702/Remarketing/AddAudience.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Remarketing/AddAudience.vb rename to examples/AdWords/Vb/v201702/Remarketing/AddAudience.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Remarketing/AddConversionTracker.vb b/examples/AdWords/Vb/v201702/Remarketing/AddConversionTracker.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Remarketing/AddConversionTracker.vb rename to examples/AdWords/Vb/v201702/Remarketing/AddConversionTracker.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Remarketing/AddCrmBasedUserList.vb b/examples/AdWords/Vb/v201702/Remarketing/AddCrmBasedUserList.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Remarketing/AddCrmBasedUserList.vb rename to examples/AdWords/Vb/v201702/Remarketing/AddCrmBasedUserList.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Remarketing/AddRuleBasedRemarketingList.vb b/examples/AdWords/Vb/v201702/Remarketing/AddRuleBasedRemarketingList.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Remarketing/AddRuleBasedRemarketingList.vb rename to examples/AdWords/Vb/v201702/Remarketing/AddRuleBasedRemarketingList.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Remarketing/UploadOfflineCallConversions.vb b/examples/AdWords/Vb/v201702/Remarketing/UploadOfflineCallConversions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Remarketing/UploadOfflineCallConversions.vb rename to examples/AdWords/Vb/v201702/Remarketing/UploadOfflineCallConversions.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Remarketing/UploadOfflineConversions.vb b/examples/AdWords/Vb/v201702/Remarketing/UploadOfflineConversions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Remarketing/UploadOfflineConversions.vb rename to examples/AdWords/Vb/v201702/Remarketing/UploadOfflineConversions.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithAwql.vb b/examples/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithAwql.vb rename to examples/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithSelector.vb b/examples/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithSelector.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithSelector.vb rename to examples/AdWords/Vb/v201702/Reporting/DownloadCriteriaReportWithSelector.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Reporting/GetReportFields.vb b/examples/AdWords/Vb/v201702/Reporting/GetReportFields.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Reporting/GetReportFields.vb rename to examples/AdWords/Vb/v201702/Reporting/GetReportFields.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Reporting/StreamCriteriaReportResults.vb b/examples/AdWords/Vb/v201702/Reporting/StreamCriteriaReportResults.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Reporting/StreamCriteriaReportResults.vb rename to examples/AdWords/Vb/v201702/Reporting/StreamCriteriaReportResults.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Reporting/StreamCriteriaReportToPoco.vb b/examples/AdWords/Vb/v201702/Reporting/StreamCriteriaReportToPoco.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Reporting/StreamCriteriaReportToPoco.vb rename to examples/AdWords/Vb/v201702/Reporting/StreamCriteriaReportToPoco.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Reporting/StreamReportToPredefinedReportRowType.vb b/examples/AdWords/Vb/v201702/Reporting/StreamReportToPredefinedReportRowType.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Reporting/StreamReportToPredefinedReportRowType.vb rename to examples/AdWords/Vb/v201702/Reporting/StreamReportToPredefinedReportRowType.vb diff --git a/adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddProductPartitionTree.vb b/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddProductPartitionTree.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddProductPartitionTree.vb rename to examples/AdWords/Vb/v201702/ShoppingCampaigns/AddProductPartitionTree.vb diff --git a/adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddProductScope.vb b/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddProductScope.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddProductScope.vb rename to examples/AdWords/Vb/v201702/ShoppingCampaigns/AddProductScope.vb diff --git a/adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaign.vb b/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaign.vb rename to examples/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb b/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb rename to examples/AdWords/Vb/v201702/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb diff --git a/adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.vb b/examples/AdWords/Vb/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.vb rename to examples/AdWords/Vb/v201702/ShoppingCampaigns/GetProductCategoryTaxonomy.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Targeting/AddCampaignTargetingCriteria.vb b/examples/AdWords/Vb/v201702/Targeting/AddCampaignTargetingCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Targeting/AddCampaignTargetingCriteria.vb rename to examples/AdWords/Vb/v201702/Targeting/AddCampaignTargetingCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Targeting/GetCampaignTargetingCriteria.vb b/examples/AdWords/Vb/v201702/Targeting/GetCampaignTargetingCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Targeting/GetCampaignTargetingCriteria.vb rename to examples/AdWords/Vb/v201702/Targeting/GetCampaignTargetingCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Targeting/GetTargetableLanguagesAndCarriers.vb b/examples/AdWords/Vb/v201702/Targeting/GetTargetableLanguagesAndCarriers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Targeting/GetTargetableLanguagesAndCarriers.vb rename to examples/AdWords/Vb/v201702/Targeting/GetTargetableLanguagesAndCarriers.vb diff --git a/adwords/examples/AdWords/Vb/v201702/Targeting/LookupLocation.vb b/examples/AdWords/Vb/v201702/Targeting/LookupLocation.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201702/Targeting/LookupLocation.vb rename to examples/AdWords/Vb/v201702/Targeting/LookupLocation.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AccountManagement/AcceptServiceLink.vb b/examples/AdWords/Vb/v201705/AccountManagement/AcceptServiceLink.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AccountManagement/AcceptServiceLink.vb rename to examples/AdWords/Vb/v201705/AccountManagement/AcceptServiceLink.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AccountManagement/CreateAccount.vb b/examples/AdWords/Vb/v201705/AccountManagement/CreateAccount.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AccountManagement/CreateAccount.vb rename to examples/AdWords/Vb/v201705/AccountManagement/CreateAccount.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AccountManagement/GetAccountChanges.vb b/examples/AdWords/Vb/v201705/AccountManagement/GetAccountChanges.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AccountManagement/GetAccountChanges.vb rename to examples/AdWords/Vb/v201705/AccountManagement/GetAccountChanges.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AccountManagement/GetAccountHierarchy.vb b/examples/AdWords/Vb/v201705/AccountManagement/GetAccountHierarchy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AccountManagement/GetAccountHierarchy.vb rename to examples/AdWords/Vb/v201705/AccountManagement/GetAccountHierarchy.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddAdCustomizers.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddAdCustomizers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddAdCustomizers.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddAdCustomizers.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddAdGroupBidModifier.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddAdGroupBidModifier.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddAdGroupBidModifier.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddAdGroupBidModifier.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddClickToDownloadAd.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddClickToDownloadAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddClickToDownloadAd.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddClickToDownloadAd.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddDynamicPageFeed.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddDynamicPageFeed.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddDynamicPageFeed.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddDynamicPageFeed.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddDynamicSearchAdsCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddExpandedTextAdWithUpgradedUrls.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddHtml5Ad.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddHtml5Ad.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddHtml5Ad.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddHtml5Ad.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddResponsiveDisplayAd.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddResponsiveDisplayAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddResponsiveDisplayAd.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddResponsiveDisplayAd.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddUniversalAppCampaign.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/AddUniversalAppCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/AddUniversalAppCampaign.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/AddUniversalAppCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/CreateAndAttachSharedKeywordSet.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/FindAndRemoveCriteriaFromSharedSet.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/GetAdGroupBidModifiers.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/GetAdGroupBidModifiers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/GetAdGroupBidModifiers.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/GetAdGroupBidModifiers.vb diff --git a/adwords/examples/AdWords/Vb/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.vb b/examples/AdWords/Vb/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.vb rename to examples/AdWords/Vb/v201705/AdvancedOperations/UsePortfolioBiddingStrategy.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/AddAdGroupDemographicCriteria.vb b/examples/AdWords/Vb/v201705/BasicOperations/AddAdGroupDemographicCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/AddAdGroupDemographicCriteria.vb rename to examples/AdWords/Vb/v201705/BasicOperations/AddAdGroupDemographicCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/AddAdGroups.vb b/examples/AdWords/Vb/v201705/BasicOperations/AddAdGroups.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/AddAdGroups.vb rename to examples/AdWords/Vb/v201705/BasicOperations/AddAdGroups.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/AddCampaigns.vb b/examples/AdWords/Vb/v201705/BasicOperations/AddCampaigns.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/AddCampaigns.vb rename to examples/AdWords/Vb/v201705/BasicOperations/AddCampaigns.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/AddExpandedTextAds.vb b/examples/AdWords/Vb/v201705/BasicOperations/AddExpandedTextAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/AddExpandedTextAds.vb rename to examples/AdWords/Vb/v201705/BasicOperations/AddExpandedTextAds.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/AddKeywords.vb b/examples/AdWords/Vb/v201705/BasicOperations/AddKeywords.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/AddKeywords.vb rename to examples/AdWords/Vb/v201705/BasicOperations/AddKeywords.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/GetAdGroups.vb b/examples/AdWords/Vb/v201705/BasicOperations/GetAdGroups.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/GetAdGroups.vb rename to examples/AdWords/Vb/v201705/BasicOperations/GetAdGroups.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/GetCampaigns.vb b/examples/AdWords/Vb/v201705/BasicOperations/GetCampaigns.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/GetCampaigns.vb rename to examples/AdWords/Vb/v201705/BasicOperations/GetCampaigns.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/GetCampaignsWithAwql.vb b/examples/AdWords/Vb/v201705/BasicOperations/GetCampaignsWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/GetCampaignsWithAwql.vb rename to examples/AdWords/Vb/v201705/BasicOperations/GetCampaignsWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/GetExpandedTextAds.vb b/examples/AdWords/Vb/v201705/BasicOperations/GetExpandedTextAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/GetExpandedTextAds.vb rename to examples/AdWords/Vb/v201705/BasicOperations/GetExpandedTextAds.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/GetKeywords.vb b/examples/AdWords/Vb/v201705/BasicOperations/GetKeywords.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/GetKeywords.vb rename to examples/AdWords/Vb/v201705/BasicOperations/GetKeywords.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/PauseAd.vb b/examples/AdWords/Vb/v201705/BasicOperations/PauseAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/PauseAd.vb rename to examples/AdWords/Vb/v201705/BasicOperations/PauseAd.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/RemoveAd.vb b/examples/AdWords/Vb/v201705/BasicOperations/RemoveAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/RemoveAd.vb rename to examples/AdWords/Vb/v201705/BasicOperations/RemoveAd.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/RemoveAdGroup.vb b/examples/AdWords/Vb/v201705/BasicOperations/RemoveAdGroup.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/RemoveAdGroup.vb rename to examples/AdWords/Vb/v201705/BasicOperations/RemoveAdGroup.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/RemoveCampaign.vb b/examples/AdWords/Vb/v201705/BasicOperations/RemoveCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/RemoveCampaign.vb rename to examples/AdWords/Vb/v201705/BasicOperations/RemoveCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/RemoveKeyword.vb b/examples/AdWords/Vb/v201705/BasicOperations/RemoveKeyword.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/RemoveKeyword.vb rename to examples/AdWords/Vb/v201705/BasicOperations/RemoveKeyword.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/UpdateAdGroup.vb b/examples/AdWords/Vb/v201705/BasicOperations/UpdateAdGroup.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/UpdateAdGroup.vb rename to examples/AdWords/Vb/v201705/BasicOperations/UpdateAdGroup.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/UpdateCampaign.vb b/examples/AdWords/Vb/v201705/BasicOperations/UpdateCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/UpdateCampaign.vb rename to examples/AdWords/Vb/v201705/BasicOperations/UpdateCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201705/BasicOperations/UpdateKeyword.vb b/examples/AdWords/Vb/v201705/BasicOperations/UpdateKeyword.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/BasicOperations/UpdateKeyword.vb rename to examples/AdWords/Vb/v201705/BasicOperations/UpdateKeyword.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.vb b/examples/AdWords/Vb/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/AddCampaignGroupsAndPerformanceTargets.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddCampaignLabels.vb b/examples/AdWords/Vb/v201705/CampaignManagement/AddCampaignLabels.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddCampaignLabels.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/AddCampaignLabels.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb b/examples/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb b/examples/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/AddCompleteCampaignsUsingStreamingBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddDraft.vb b/examples/AdWords/Vb/v201705/CampaignManagement/AddDraft.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddDraft.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/AddDraft.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb b/examples/AdWords/Vb/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/AddKeywordsUsingIncrementalBatchJob.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddTrial.vb b/examples/AdWords/Vb/v201705/CampaignManagement/AddTrial.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/AddTrial.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/AddTrial.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAds.vb b/examples/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAds.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAds.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb b/examples/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/GetAllDisapprovedAdsWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/GetCampaignsByLabel.vb b/examples/AdWords/Vb/v201705/CampaignManagement/GetCampaignsByLabel.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/GetCampaignsByLabel.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/GetCampaignsByLabel.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/GraduateTrial.vb b/examples/AdWords/Vb/v201705/CampaignManagement/GraduateTrial.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/GraduateTrial.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/GraduateTrial.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/SetAdParameters.vb b/examples/AdWords/Vb/v201705/CampaignManagement/SetAdParameters.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/SetAdParameters.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/SetAdParameters.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/SetBidModifier.vb b/examples/AdWords/Vb/v201705/CampaignManagement/SetBidModifier.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/SetBidModifier.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/SetBidModifier.vb diff --git a/adwords/examples/AdWords/Vb/v201705/CampaignManagement/ValidateTextAd.vb b/examples/AdWords/Vb/v201705/CampaignManagement/ValidateTextAd.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/CampaignManagement/ValidateTextAd.vb rename to examples/AdWords/Vb/v201705/CampaignManagement/ValidateTextAd.vb diff --git a/adwords/examples/AdWords/Vb/v201705/ErrorHandling/HandlePartialFailures.vb b/examples/AdWords/Vb/v201705/ErrorHandling/HandlePartialFailures.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/ErrorHandling/HandlePartialFailures.vb rename to examples/AdWords/Vb/v201705/ErrorHandling/HandlePartialFailures.vb diff --git a/adwords/examples/AdWords/Vb/v201705/ErrorHandling/HandlePolicyViolationError.vb b/examples/AdWords/Vb/v201705/ErrorHandling/HandlePolicyViolationError.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/ErrorHandling/HandlePolicyViolationError.vb rename to examples/AdWords/Vb/v201705/ErrorHandling/HandlePolicyViolationError.vb diff --git a/adwords/examples/AdWords/Vb/v201705/ErrorHandling/HandleRateExceededError.vb b/examples/AdWords/Vb/v201705/ErrorHandling/HandleRateExceededError.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/ErrorHandling/HandleRateExceededError.vb rename to examples/AdWords/Vb/v201705/ErrorHandling/HandleRateExceededError.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.vb b/examples/AdWords/Vb/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.vb rename to examples/AdWords/Vb/v201705/Extensions/AddGoogleMyBusinessLocationExtensions.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Extensions/AddPrices.vb b/examples/AdWords/Vb/v201705/Extensions/AddPrices.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Extensions/AddPrices.vb rename to examples/AdWords/Vb/v201705/Extensions/AddPrices.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Extensions/AddSitelinks.vb b/examples/AdWords/Vb/v201705/Extensions/AddSitelinks.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Extensions/AddSitelinks.vb rename to examples/AdWords/Vb/v201705/Extensions/AddSitelinks.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Extensions/AddSitelinksUsingFeeds.vb b/examples/AdWords/Vb/v201705/Extensions/AddSitelinksUsingFeeds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Extensions/AddSitelinksUsingFeeds.vb rename to examples/AdWords/Vb/v201705/Extensions/AddSitelinksUsingFeeds.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Migration/MigrateToExtensionSettings.vb b/examples/AdWords/Vb/v201705/Migration/MigrateToExtensionSettings.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Migration/MigrateToExtensionSettings.vb rename to examples/AdWords/Vb/v201705/Migration/MigrateToExtensionSettings.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Miscellaneous/GetAllVideosAndImages.vb b/examples/AdWords/Vb/v201705/Miscellaneous/GetAllVideosAndImages.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Miscellaneous/GetAllVideosAndImages.vb rename to examples/AdWords/Vb/v201705/Miscellaneous/GetAllVideosAndImages.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Miscellaneous/UploadImage.vb b/examples/AdWords/Vb/v201705/Miscellaneous/UploadImage.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Miscellaneous/UploadImage.vb rename to examples/AdWords/Vb/v201705/Miscellaneous/UploadImage.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Miscellaneous/UploadMediaBundle.vb b/examples/AdWords/Vb/v201705/Miscellaneous/UploadMediaBundle.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Miscellaneous/UploadMediaBundle.vb rename to examples/AdWords/Vb/v201705/Miscellaneous/UploadMediaBundle.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Optimization/EstimateKeywordTraffic.vb b/examples/AdWords/Vb/v201705/Optimization/EstimateKeywordTraffic.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Optimization/EstimateKeywordTraffic.vb rename to examples/AdWords/Vb/v201705/Optimization/EstimateKeywordTraffic.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Optimization/GetAdGroupBidSimulations.vb b/examples/AdWords/Vb/v201705/Optimization/GetAdGroupBidSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Optimization/GetAdGroupBidSimulations.vb rename to examples/AdWords/Vb/v201705/Optimization/GetAdGroupBidSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.vb b/examples/AdWords/Vb/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.vb rename to examples/AdWords/Vb/v201705/Optimization/GetCampaignCriterionBidModifierSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Optimization/GetKeywordBidSimulations.vb b/examples/AdWords/Vb/v201705/Optimization/GetKeywordBidSimulations.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Optimization/GetKeywordBidSimulations.vb rename to examples/AdWords/Vb/v201705/Optimization/GetKeywordBidSimulations.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Optimization/GetKeywordIdeas.vb b/examples/AdWords/Vb/v201705/Optimization/GetKeywordIdeas.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Optimization/GetKeywordIdeas.vb rename to examples/AdWords/Vb/v201705/Optimization/GetKeywordIdeas.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Remarketing/AddAudience.vb b/examples/AdWords/Vb/v201705/Remarketing/AddAudience.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Remarketing/AddAudience.vb rename to examples/AdWords/Vb/v201705/Remarketing/AddAudience.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Remarketing/AddConversionTracker.vb b/examples/AdWords/Vb/v201705/Remarketing/AddConversionTracker.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Remarketing/AddConversionTracker.vb rename to examples/AdWords/Vb/v201705/Remarketing/AddConversionTracker.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Remarketing/AddCrmBasedUserList.vb b/examples/AdWords/Vb/v201705/Remarketing/AddCrmBasedUserList.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Remarketing/AddCrmBasedUserList.vb rename to examples/AdWords/Vb/v201705/Remarketing/AddCrmBasedUserList.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Remarketing/AddRuleBasedRemarketingList.vb b/examples/AdWords/Vb/v201705/Remarketing/AddRuleBasedRemarketingList.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Remarketing/AddRuleBasedRemarketingList.vb rename to examples/AdWords/Vb/v201705/Remarketing/AddRuleBasedRemarketingList.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Remarketing/UploadOfflineCallConversions.vb b/examples/AdWords/Vb/v201705/Remarketing/UploadOfflineCallConversions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Remarketing/UploadOfflineCallConversions.vb rename to examples/AdWords/Vb/v201705/Remarketing/UploadOfflineCallConversions.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Remarketing/UploadOfflineConversions.vb b/examples/AdWords/Vb/v201705/Remarketing/UploadOfflineConversions.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Remarketing/UploadOfflineConversions.vb rename to examples/AdWords/Vb/v201705/Remarketing/UploadOfflineConversions.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithAwql.vb b/examples/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithAwql.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithAwql.vb rename to examples/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithAwql.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithSelector.vb b/examples/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithSelector.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithSelector.vb rename to examples/AdWords/Vb/v201705/Reporting/DownloadCriteriaReportWithSelector.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Reporting/GetReportFields.vb b/examples/AdWords/Vb/v201705/Reporting/GetReportFields.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Reporting/GetReportFields.vb rename to examples/AdWords/Vb/v201705/Reporting/GetReportFields.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Reporting/StreamCriteriaReportResults.vb b/examples/AdWords/Vb/v201705/Reporting/StreamCriteriaReportResults.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Reporting/StreamCriteriaReportResults.vb rename to examples/AdWords/Vb/v201705/Reporting/StreamCriteriaReportResults.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Reporting/StreamCriteriaReportToPoco.vb b/examples/AdWords/Vb/v201705/Reporting/StreamCriteriaReportToPoco.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Reporting/StreamCriteriaReportToPoco.vb rename to examples/AdWords/Vb/v201705/Reporting/StreamCriteriaReportToPoco.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Reporting/StreamReportToPredefinedReportRowType.vb b/examples/AdWords/Vb/v201705/Reporting/StreamReportToPredefinedReportRowType.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Reporting/StreamReportToPredefinedReportRowType.vb rename to examples/AdWords/Vb/v201705/Reporting/StreamReportToPredefinedReportRowType.vb diff --git a/adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddProductPartitionTree.vb b/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddProductPartitionTree.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddProductPartitionTree.vb rename to examples/AdWords/Vb/v201705/ShoppingCampaigns/AddProductPartitionTree.vb diff --git a/adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddProductScope.vb b/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddProductScope.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddProductScope.vb rename to examples/AdWords/Vb/v201705/ShoppingCampaigns/AddProductScope.vb diff --git a/adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaign.vb b/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaign.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaign.vb rename to examples/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaign.vb diff --git a/adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb b/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb rename to examples/AdWords/Vb/v201705/ShoppingCampaigns/AddShoppingCampaignForShowcaseAds.vb diff --git a/adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.vb b/examples/AdWords/Vb/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.vb rename to examples/AdWords/Vb/v201705/ShoppingCampaigns/GetProductCategoryTaxonomy.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Targeting/AddCampaignTargetingCriteria.vb b/examples/AdWords/Vb/v201705/Targeting/AddCampaignTargetingCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Targeting/AddCampaignTargetingCriteria.vb rename to examples/AdWords/Vb/v201705/Targeting/AddCampaignTargetingCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Targeting/GetCampaignTargetingCriteria.vb b/examples/AdWords/Vb/v201705/Targeting/GetCampaignTargetingCriteria.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Targeting/GetCampaignTargetingCriteria.vb rename to examples/AdWords/Vb/v201705/Targeting/GetCampaignTargetingCriteria.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Targeting/GetTargetableLanguagesAndCarriers.vb b/examples/AdWords/Vb/v201705/Targeting/GetTargetableLanguagesAndCarriers.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Targeting/GetTargetableLanguagesAndCarriers.vb rename to examples/AdWords/Vb/v201705/Targeting/GetTargetableLanguagesAndCarriers.vb diff --git a/adwords/examples/AdWords/Vb/v201705/Targeting/LookupLocation.vb b/examples/AdWords/Vb/v201705/Targeting/LookupLocation.vb similarity index 100% rename from adwords/examples/AdWords/Vb/v201705/Targeting/LookupLocation.vb rename to examples/AdWords/Vb/v201705/Targeting/LookupLocation.vb diff --git a/dfp/examples/Dfp/CSharp/App.config b/examples/Dfp/CSharp/App.config similarity index 100% rename from dfp/examples/Dfp/CSharp/App.config rename to examples/Dfp/CSharp/App.config diff --git a/dfp/examples/Dfp/CSharp/Dfp.Examples.CSharp.csproj b/examples/Dfp/CSharp/Dfp.Examples.CSharp.csproj similarity index 100% rename from dfp/examples/Dfp/CSharp/Dfp.Examples.CSharp.csproj rename to examples/Dfp/CSharp/Dfp.Examples.CSharp.csproj diff --git a/dfp/examples/Dfp/CSharp/OAuth/ConsoleExample.cs b/examples/Dfp/CSharp/OAuth/ConsoleExample.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/ConsoleExample.cs rename to examples/Dfp/CSharp/OAuth/ConsoleExample.cs diff --git a/dfp/examples/Dfp/CSharp/OAuth/Default.aspx b/examples/Dfp/CSharp/OAuth/Default.aspx similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/Default.aspx rename to examples/Dfp/CSharp/OAuth/Default.aspx diff --git a/dfp/examples/Dfp/CSharp/OAuth/Default.aspx.cs b/examples/Dfp/CSharp/OAuth/Default.aspx.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/Default.aspx.cs rename to examples/Dfp/CSharp/OAuth/Default.aspx.cs diff --git a/dfp/examples/Dfp/CSharp/OAuth/Default.aspx.designer.cs b/examples/Dfp/CSharp/OAuth/Default.aspx.designer.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/Default.aspx.designer.cs rename to examples/Dfp/CSharp/OAuth/Default.aspx.designer.cs diff --git a/dfp/examples/Dfp/CSharp/OAuth/Dfp.Examples.CSharp.OAuth.csproj b/examples/Dfp/CSharp/OAuth/Dfp.Examples.CSharp.OAuth.csproj similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/Dfp.Examples.CSharp.OAuth.csproj rename to examples/Dfp/CSharp/OAuth/Dfp.Examples.CSharp.OAuth.csproj diff --git a/dfp/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx b/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx rename to examples/Dfp/CSharp/OAuth/OAuthLogin.aspx diff --git a/dfp/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx.cs b/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx.cs rename to examples/Dfp/CSharp/OAuth/OAuthLogin.aspx.cs diff --git a/dfp/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx.designer.cs b/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx.designer.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/OAuthLogin.aspx.designer.cs rename to examples/Dfp/CSharp/OAuth/OAuthLogin.aspx.designer.cs diff --git a/dfp/examples/Dfp/CSharp/OAuth/Properties/AssemblyInfo.cs b/examples/Dfp/CSharp/OAuth/Properties/AssemblyInfo.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/Properties/AssemblyInfo.cs rename to examples/Dfp/CSharp/OAuth/Properties/AssemblyInfo.cs diff --git a/dfp/examples/Dfp/CSharp/OAuth/Properties/Properties.cs b/examples/Dfp/CSharp/OAuth/Properties/Properties.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/Properties/Properties.cs rename to examples/Dfp/CSharp/OAuth/Properties/Properties.cs diff --git a/dfp/examples/Dfp/CSharp/OAuth/README.md b/examples/Dfp/CSharp/OAuth/README.md similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/README.md rename to examples/Dfp/CSharp/OAuth/README.md diff --git a/dfp/examples/Dfp/CSharp/OAuth/Web.config b/examples/Dfp/CSharp/OAuth/Web.config similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/Web.config rename to examples/Dfp/CSharp/OAuth/Web.config diff --git a/dfp/examples/Dfp/CSharp/OAuth/css/main.css b/examples/Dfp/CSharp/OAuth/css/main.css similarity index 100% rename from dfp/examples/Dfp/CSharp/OAuth/css/main.css rename to examples/Dfp/CSharp/OAuth/css/main.css diff --git a/dfp/examples/Dfp/CSharp/Program.cs b/examples/Dfp/CSharp/Program.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/Program.cs rename to examples/Dfp/CSharp/Program.cs diff --git a/dfp/examples/Dfp/CSharp/Properties/AssemblyInfo.cs b/examples/Dfp/CSharp/Properties/AssemblyInfo.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/Properties/AssemblyInfo.cs rename to examples/Dfp/CSharp/Properties/AssemblyInfo.cs diff --git a/dfp/examples/Dfp/CSharp/Properties/Properties.cs b/examples/Dfp/CSharp/Properties/Properties.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/Properties/Properties.cs rename to examples/Dfp/CSharp/Properties/Properties.cs diff --git a/dfp/examples/Dfp/CSharp/SampleBase.cs b/examples/Dfp/CSharp/SampleBase.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/SampleBase.cs rename to examples/Dfp/CSharp/SampleBase.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ActivityGroupService/CreateActivityGroups.cs b/examples/Dfp/CSharp/v201611/ActivityGroupService/CreateActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ActivityGroupService/CreateActivityGroups.cs rename to examples/Dfp/CSharp/v201611/ActivityGroupService/CreateActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ActivityGroupService/GetActiveActivityGroups.cs b/examples/Dfp/CSharp/v201611/ActivityGroupService/GetActiveActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ActivityGroupService/GetActiveActivityGroups.cs rename to examples/Dfp/CSharp/v201611/ActivityGroupService/GetActiveActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ActivityGroupService/GetAllActivityGroups.cs b/examples/Dfp/CSharp/v201611/ActivityGroupService/GetAllActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ActivityGroupService/GetAllActivityGroups.cs rename to examples/Dfp/CSharp/v201611/ActivityGroupService/GetAllActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ActivityGroupService/UpdateActivityGroups.cs b/examples/Dfp/CSharp/v201611/ActivityGroupService/UpdateActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ActivityGroupService/UpdateActivityGroups.cs rename to examples/Dfp/CSharp/v201611/ActivityGroupService/UpdateActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ActivityService/CreateActivities.cs b/examples/Dfp/CSharp/v201611/ActivityService/CreateActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ActivityService/CreateActivities.cs rename to examples/Dfp/CSharp/v201611/ActivityService/CreateActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ActivityService/GetActiveActivities.cs b/examples/Dfp/CSharp/v201611/ActivityService/GetActiveActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ActivityService/GetActiveActivities.cs rename to examples/Dfp/CSharp/v201611/ActivityService/GetActiveActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ActivityService/GetAllActivities.cs b/examples/Dfp/CSharp/v201611/ActivityService/GetAllActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ActivityService/GetAllActivities.cs rename to examples/Dfp/CSharp/v201611/ActivityService/GetAllActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ActivityService/UpdateActivities.cs b/examples/Dfp/CSharp/v201611/ActivityService/UpdateActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ActivityService/UpdateActivities.cs rename to examples/Dfp/CSharp/v201611/ActivityService/UpdateActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/CreateAudienceSegments.cs b/examples/Dfp/CSharp/v201611/AudienceSegmentService/CreateAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/CreateAudienceSegments.cs rename to examples/Dfp/CSharp/v201611/AudienceSegmentService/CreateAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/GetAllAudienceSegments.cs b/examples/Dfp/CSharp/v201611/AudienceSegmentService/GetAllAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/GetAllAudienceSegments.cs rename to examples/Dfp/CSharp/v201611/AudienceSegmentService/GetAllAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/GetFirstPartyAudienceSegments.cs b/examples/Dfp/CSharp/v201611/AudienceSegmentService/GetFirstPartyAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/GetFirstPartyAudienceSegments.cs rename to examples/Dfp/CSharp/v201611/AudienceSegmentService/GetFirstPartyAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs b/examples/Dfp/CSharp/v201611/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs rename to examples/Dfp/CSharp/v201611/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/UpdateAudienceSegments.cs b/examples/Dfp/CSharp/v201611/AudienceSegmentService/UpdateAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/AudienceSegmentService/UpdateAudienceSegments.cs rename to examples/Dfp/CSharp/v201611/AudienceSegmentService/UpdateAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/BaseRateService/CreateProductBaseRates.cs b/examples/Dfp/CSharp/v201611/BaseRateService/CreateProductBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/BaseRateService/CreateProductBaseRates.cs rename to examples/Dfp/CSharp/v201611/BaseRateService/CreateProductBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/BaseRateService/CreateProductTemplateBaseRates.cs b/examples/Dfp/CSharp/v201611/BaseRateService/CreateProductTemplateBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/BaseRateService/CreateProductTemplateBaseRates.cs rename to examples/Dfp/CSharp/v201611/BaseRateService/CreateProductTemplateBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/BaseRateService/GetAllBaseRates.cs b/examples/Dfp/CSharp/v201611/BaseRateService/GetAllBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/BaseRateService/GetAllBaseRates.cs rename to examples/Dfp/CSharp/v201611/BaseRateService/GetAllBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/BaseRateService/GetBaseRatesForRateCard.cs b/examples/Dfp/CSharp/v201611/BaseRateService/GetBaseRatesForRateCard.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/BaseRateService/GetBaseRatesForRateCard.cs rename to examples/Dfp/CSharp/v201611/BaseRateService/GetBaseRatesForRateCard.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/BaseRateService/UpdateBaseRates.cs b/examples/Dfp/CSharp/v201611/BaseRateService/UpdateBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/BaseRateService/UpdateBaseRates.cs rename to examples/Dfp/CSharp/v201611/BaseRateService/UpdateBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CompanyService/CreateCompanies.cs b/examples/Dfp/CSharp/v201611/CompanyService/CreateCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CompanyService/CreateCompanies.cs rename to examples/Dfp/CSharp/v201611/CompanyService/CreateCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CompanyService/GetAdvertisers.cs b/examples/Dfp/CSharp/v201611/CompanyService/GetAdvertisers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CompanyService/GetAdvertisers.cs rename to examples/Dfp/CSharp/v201611/CompanyService/GetAdvertisers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CompanyService/GetAllCompanies.cs b/examples/Dfp/CSharp/v201611/CompanyService/GetAllCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CompanyService/GetAllCompanies.cs rename to examples/Dfp/CSharp/v201611/CompanyService/GetAllCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CompanyService/UpdateCompanies.cs b/examples/Dfp/CSharp/v201611/CompanyService/UpdateCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CompanyService/UpdateCompanies.cs rename to examples/Dfp/CSharp/v201611/CompanyService/UpdateCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContactService/CreateContacts.cs b/examples/Dfp/CSharp/v201611/ContactService/CreateContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContactService/CreateContacts.cs rename to examples/Dfp/CSharp/v201611/ContactService/CreateContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContactService/GetAllContacts.cs b/examples/Dfp/CSharp/v201611/ContactService/GetAllContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContactService/GetAllContacts.cs rename to examples/Dfp/CSharp/v201611/ContactService/GetAllContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContactService/GetUninvitedContacts.cs b/examples/Dfp/CSharp/v201611/ContactService/GetUninvitedContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContactService/GetUninvitedContacts.cs rename to examples/Dfp/CSharp/v201611/ContactService/GetUninvitedContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContactService/UpdateContacts.cs b/examples/Dfp/CSharp/v201611/ContactService/UpdateContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContactService/UpdateContacts.cs rename to examples/Dfp/CSharp/v201611/ContactService/UpdateContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201611/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ContentService/GetAllContent.cs b/examples/Dfp/CSharp/v201611/ContentService/GetAllContent.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ContentService/GetAllContent.cs rename to examples/Dfp/CSharp/v201611/ContentService/GetAllContent.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeService/CopyImageCreatives.cs b/examples/Dfp/CSharp/v201611/CreativeService/CopyImageCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeService/CopyImageCreatives.cs rename to examples/Dfp/CSharp/v201611/CreativeService/CopyImageCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeService/CreateCreativeFromTemplate.cs b/examples/Dfp/CSharp/v201611/CreativeService/CreateCreativeFromTemplate.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeService/CreateCreativeFromTemplate.cs rename to examples/Dfp/CSharp/v201611/CreativeService/CreateCreativeFromTemplate.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeService/CreateCreatives.cs b/examples/Dfp/CSharp/v201611/CreativeService/CreateCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeService/CreateCreatives.cs rename to examples/Dfp/CSharp/v201611/CreativeService/CreateCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeService/CreateCustomCreative.cs b/examples/Dfp/CSharp/v201611/CreativeService/CreateCustomCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeService/CreateCustomCreative.cs rename to examples/Dfp/CSharp/v201611/CreativeService/CreateCustomCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeService/CreateNativeCreative.cs b/examples/Dfp/CSharp/v201611/CreativeService/CreateNativeCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeService/CreateNativeCreative.cs rename to examples/Dfp/CSharp/v201611/CreativeService/CreateNativeCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeService/GetAllCreatives.cs b/examples/Dfp/CSharp/v201611/CreativeService/GetAllCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeService/GetAllCreatives.cs rename to examples/Dfp/CSharp/v201611/CreativeService/GetAllCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeService/GetImageCreatives.cs b/examples/Dfp/CSharp/v201611/CreativeService/GetImageCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeService/GetImageCreatives.cs rename to examples/Dfp/CSharp/v201611/CreativeService/GetImageCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeService/UpdateCreatives.cs b/examples/Dfp/CSharp/v201611/CreativeService/UpdateCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeService/UpdateCreatives.cs rename to examples/Dfp/CSharp/v201611/CreativeService/UpdateCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeSetService/GetAllCreativeSets.cs b/examples/Dfp/CSharp/v201611/CreativeSetService/GetAllCreativeSets.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeSetService/GetAllCreativeSets.cs rename to examples/Dfp/CSharp/v201611/CreativeSetService/GetAllCreativeSets.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeSetService/GetCreativeSetsForMasterCreative.cs b/examples/Dfp/CSharp/v201611/CreativeSetService/GetCreativeSetsForMasterCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeSetService/GetCreativeSetsForMasterCreative.cs rename to examples/Dfp/CSharp/v201611/CreativeSetService/GetCreativeSetsForMasterCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeTemplateService/GetAllCreativeTemplates.cs b/examples/Dfp/CSharp/v201611/CreativeTemplateService/GetAllCreativeTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeTemplateService/GetAllCreativeTemplates.cs rename to examples/Dfp/CSharp/v201611/CreativeTemplateService/GetAllCreativeTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs b/examples/Dfp/CSharp/v201611/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs rename to examples/Dfp/CSharp/v201611/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/CreateCreativeWrappers.cs b/examples/Dfp/CSharp/v201611/CreativeWrapperService/CreateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/CreateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201611/CreativeWrapperService/CreateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/DeactivateCreativeWrappers.cs b/examples/Dfp/CSharp/v201611/CreativeWrapperService/DeactivateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/DeactivateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201611/CreativeWrapperService/DeactivateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/GetActiveCreativeWrappers.cs b/examples/Dfp/CSharp/v201611/CreativeWrapperService/GetActiveCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/GetActiveCreativeWrappers.cs rename to examples/Dfp/CSharp/v201611/CreativeWrapperService/GetActiveCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/GetAllCreativeWrappers.cs b/examples/Dfp/CSharp/v201611/CreativeWrapperService/GetAllCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/GetAllCreativeWrappers.cs rename to examples/Dfp/CSharp/v201611/CreativeWrapperService/GetAllCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/UpdateCreativeWrappers.cs b/examples/Dfp/CSharp/v201611/CreativeWrapperService/UpdateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CreativeWrapperService/UpdateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201611/CreativeWrapperService/UpdateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFieldOptions.cs b/examples/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFieldOptions.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFieldOptions.cs rename to examples/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFieldOptions.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFields.cs b/examples/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFields.cs rename to examples/Dfp/CSharp/v201611/CustomFieldService/CreateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomFieldService/DeactivateCustomFields.cs b/examples/Dfp/CSharp/v201611/CustomFieldService/DeactivateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomFieldService/DeactivateCustomFields.cs rename to examples/Dfp/CSharp/v201611/CustomFieldService/DeactivateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomFieldService/GetAllCustomFields.cs b/examples/Dfp/CSharp/v201611/CustomFieldService/GetAllCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomFieldService/GetAllCustomFields.cs rename to examples/Dfp/CSharp/v201611/CustomFieldService/GetAllCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomFieldService/GetCustomFieldsForLineItems.cs b/examples/Dfp/CSharp/v201611/CustomFieldService/GetCustomFieldsForLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomFieldService/GetCustomFieldsForLineItems.cs rename to examples/Dfp/CSharp/v201611/CustomFieldService/GetCustomFieldsForLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomFieldService/SetLineItemCustomFieldValue.cs b/examples/Dfp/CSharp/v201611/CustomFieldService/SetLineItemCustomFieldValue.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomFieldService/SetLineItemCustomFieldValue.cs rename to examples/Dfp/CSharp/v201611/CustomFieldService/SetLineItemCustomFieldValue.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomFieldService/UpdateCustomFields.cs b/examples/Dfp/CSharp/v201611/CustomFieldService/UpdateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomFieldService/UpdateCustomFields.cs rename to examples/Dfp/CSharp/v201611/CustomFieldService/UpdateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201611/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201611/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201611/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201611/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201611/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201611/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingKeys.cs b/examples/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingKeys.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingKeys.cs rename to examples/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingKeys.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingValues.cs b/examples/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingValues.cs rename to examples/Dfp/CSharp/v201611/CustomTargetingService/UpdateCustomTargetingValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ExchangeRateService/CreateExchangeRates.cs b/examples/Dfp/CSharp/v201611/ExchangeRateService/CreateExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ExchangeRateService/CreateExchangeRates.cs rename to examples/Dfp/CSharp/v201611/ExchangeRateService/CreateExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ExchangeRateService/GetAllExchangeRates.cs b/examples/Dfp/CSharp/v201611/ExchangeRateService/GetAllExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ExchangeRateService/GetAllExchangeRates.cs rename to examples/Dfp/CSharp/v201611/ExchangeRateService/GetAllExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs b/examples/Dfp/CSharp/v201611/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs rename to examples/Dfp/CSharp/v201611/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ExchangeRateService/UpdateExchangeRates.cs b/examples/Dfp/CSharp/v201611/ExchangeRateService/UpdateExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ExchangeRateService/UpdateExchangeRates.cs rename to examples/Dfp/CSharp/v201611/ExchangeRateService/UpdateExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecast.cs b/examples/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecast.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecast.cs rename to examples/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecast.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecastById.cs b/examples/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecastById.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecastById.cs rename to examples/Dfp/CSharp/v201611/ForecastService/GetAvailabilityForecastById.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ForecastService/GetDeliveryForecastByIds.cs b/examples/Dfp/CSharp/v201611/ForecastService/GetDeliveryForecastByIds.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ForecastService/GetDeliveryForecastByIds.cs rename to examples/Dfp/CSharp/v201611/ForecastService/GetDeliveryForecastByIds.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/InventoryService/CreateAdUnits.cs b/examples/Dfp/CSharp/v201611/InventoryService/CreateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/InventoryService/CreateAdUnits.cs rename to examples/Dfp/CSharp/v201611/InventoryService/CreateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/InventoryService/CreateVideoAdUnit.cs b/examples/Dfp/CSharp/v201611/InventoryService/CreateVideoAdUnit.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/InventoryService/CreateVideoAdUnit.cs rename to examples/Dfp/CSharp/v201611/InventoryService/CreateVideoAdUnit.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/InventoryService/DeActivateAdUnits.cs b/examples/Dfp/CSharp/v201611/InventoryService/DeActivateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/InventoryService/DeActivateAdUnits.cs rename to examples/Dfp/CSharp/v201611/InventoryService/DeActivateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/InventoryService/GetAdUnitsByStatement.cs b/examples/Dfp/CSharp/v201611/InventoryService/GetAdUnitsByStatement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/InventoryService/GetAdUnitsByStatement.cs rename to examples/Dfp/CSharp/v201611/InventoryService/GetAdUnitsByStatement.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/InventoryService/GetAllAdUnitSizes.cs b/examples/Dfp/CSharp/v201611/InventoryService/GetAllAdUnitSizes.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/InventoryService/GetAllAdUnitSizes.cs rename to examples/Dfp/CSharp/v201611/InventoryService/GetAllAdUnitSizes.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/InventoryService/GetAllAdUnits.cs b/examples/Dfp/CSharp/v201611/InventoryService/GetAllAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/InventoryService/GetAllAdUnits.cs rename to examples/Dfp/CSharp/v201611/InventoryService/GetAllAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/InventoryService/GetInventoryTree.cs b/examples/Dfp/CSharp/v201611/InventoryService/GetInventoryTree.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/InventoryService/GetInventoryTree.cs rename to examples/Dfp/CSharp/v201611/InventoryService/GetInventoryTree.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/InventoryService/UpdateAdUnits.cs b/examples/Dfp/CSharp/v201611/InventoryService/UpdateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/InventoryService/UpdateAdUnits.cs rename to examples/Dfp/CSharp/v201611/InventoryService/UpdateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LabelService/CreateLabels.cs b/examples/Dfp/CSharp/v201611/LabelService/CreateLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LabelService/CreateLabels.cs rename to examples/Dfp/CSharp/v201611/LabelService/CreateLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LabelService/DeactivateActiveLabels.cs b/examples/Dfp/CSharp/v201611/LabelService/DeactivateActiveLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LabelService/DeactivateActiveLabels.cs rename to examples/Dfp/CSharp/v201611/LabelService/DeactivateActiveLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LabelService/GetActiveLabels.cs b/examples/Dfp/CSharp/v201611/LabelService/GetActiveLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LabelService/GetActiveLabels.cs rename to examples/Dfp/CSharp/v201611/LabelService/GetActiveLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LabelService/GetAllLabels.cs b/examples/Dfp/CSharp/v201611/LabelService/GetAllLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LabelService/GetAllLabels.cs rename to examples/Dfp/CSharp/v201611/LabelService/GetAllLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LabelService/UpdateLabels.cs b/examples/Dfp/CSharp/v201611/LabelService/UpdateLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LabelService/UpdateLabels.cs rename to examples/Dfp/CSharp/v201611/LabelService/UpdateLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/ActivateLicas.cs b/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/ActivateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/ActivateLicas.cs rename to examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/ActivateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/CreateLicas.cs b/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/CreateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/CreateLicas.cs rename to examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/CreateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/DeactivateLicas.cs b/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/DeactivateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/DeactivateLicas.cs rename to examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/DeactivateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetAllLicas.cs b/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetAllLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetAllLicas.cs rename to examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetAllLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetLicasForLineItem.cs b/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetLicasForLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetLicasForLineItem.cs rename to examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/GetLicasForLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/UpdateLicas.cs b/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/UpdateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/UpdateLicas.cs rename to examples/Dfp/CSharp/v201611/LineItemCreativeAssociationService/UpdateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemService/ActivateLineItem.cs b/examples/Dfp/CSharp/v201611/LineItemService/ActivateLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemService/ActivateLineItem.cs rename to examples/Dfp/CSharp/v201611/LineItemService/ActivateLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemService/CreateLineItems.cs b/examples/Dfp/CSharp/v201611/LineItemService/CreateLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemService/CreateLineItems.cs rename to examples/Dfp/CSharp/v201611/LineItemService/CreateLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemService/CreateVideoLineItem.cs b/examples/Dfp/CSharp/v201611/LineItemService/CreateVideoLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemService/CreateVideoLineItem.cs rename to examples/Dfp/CSharp/v201611/LineItemService/CreateVideoLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemService/GetAllLineItems.cs b/examples/Dfp/CSharp/v201611/LineItemService/GetAllLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemService/GetAllLineItems.cs rename to examples/Dfp/CSharp/v201611/LineItemService/GetAllLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemService/GetLineItemsThatNeedCreatives.cs b/examples/Dfp/CSharp/v201611/LineItemService/GetLineItemsThatNeedCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemService/GetLineItemsThatNeedCreatives.cs rename to examples/Dfp/CSharp/v201611/LineItemService/GetLineItemsThatNeedCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemService/GetRecentlyUpdatedLineItems.cs b/examples/Dfp/CSharp/v201611/LineItemService/GetRecentlyUpdatedLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemService/GetRecentlyUpdatedLineItems.cs rename to examples/Dfp/CSharp/v201611/LineItemService/GetRecentlyUpdatedLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemService/TargetCustomCriteria.cs b/examples/Dfp/CSharp/v201611/LineItemService/TargetCustomCriteria.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemService/TargetCustomCriteria.cs rename to examples/Dfp/CSharp/v201611/LineItemService/TargetCustomCriteria.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/LineItemService/UpdateLineItems.cs b/examples/Dfp/CSharp/v201611/LineItemService/UpdateLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/LineItemService/UpdateLineItems.cs rename to examples/Dfp/CSharp/v201611/LineItemService/UpdateLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/NetworkService/GetAllNetworks.cs b/examples/Dfp/CSharp/v201611/NetworkService/GetAllNetworks.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/NetworkService/GetAllNetworks.cs rename to examples/Dfp/CSharp/v201611/NetworkService/GetAllNetworks.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/NetworkService/GetCurrentNetwork.cs b/examples/Dfp/CSharp/v201611/NetworkService/GetCurrentNetwork.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/NetworkService/GetCurrentNetwork.cs rename to examples/Dfp/CSharp/v201611/NetworkService/GetCurrentNetwork.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/NetworkService/MakeTestNetwork.cs b/examples/Dfp/CSharp/v201611/NetworkService/MakeTestNetwork.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/NetworkService/MakeTestNetwork.cs rename to examples/Dfp/CSharp/v201611/NetworkService/MakeTestNetwork.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/OrderService/ApproveOrder.cs b/examples/Dfp/CSharp/v201611/OrderService/ApproveOrder.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/OrderService/ApproveOrder.cs rename to examples/Dfp/CSharp/v201611/OrderService/ApproveOrder.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/OrderService/CreateOrders.cs b/examples/Dfp/CSharp/v201611/OrderService/CreateOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/OrderService/CreateOrders.cs rename to examples/Dfp/CSharp/v201611/OrderService/CreateOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/OrderService/GetAllOrders.cs b/examples/Dfp/CSharp/v201611/OrderService/GetAllOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/OrderService/GetAllOrders.cs rename to examples/Dfp/CSharp/v201611/OrderService/GetAllOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/OrderService/GetOrdersStartingSoon.cs b/examples/Dfp/CSharp/v201611/OrderService/GetOrdersStartingSoon.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/OrderService/GetOrdersStartingSoon.cs rename to examples/Dfp/CSharp/v201611/OrderService/GetOrdersStartingSoon.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/OrderService/UpdateOrders.cs b/examples/Dfp/CSharp/v201611/OrderService/UpdateOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/OrderService/UpdateOrders.cs rename to examples/Dfp/CSharp/v201611/OrderService/UpdateOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PackageService/CreatePackages.cs b/examples/Dfp/CSharp/v201611/PackageService/CreatePackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PackageService/CreatePackages.cs rename to examples/Dfp/CSharp/v201611/PackageService/CreatePackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PackageService/CreateProposalLineItemsFromPackage.cs b/examples/Dfp/CSharp/v201611/PackageService/CreateProposalLineItemsFromPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PackageService/CreateProposalLineItemsFromPackage.cs rename to examples/Dfp/CSharp/v201611/PackageService/CreateProposalLineItemsFromPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PackageService/GetAllPackages.cs b/examples/Dfp/CSharp/v201611/PackageService/GetAllPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PackageService/GetAllPackages.cs rename to examples/Dfp/CSharp/v201611/PackageService/GetAllPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PackageService/GetInProgressPackages.cs b/examples/Dfp/CSharp/v201611/PackageService/GetInProgressPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PackageService/GetInProgressPackages.cs rename to examples/Dfp/CSharp/v201611/PackageService/GetInProgressPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PackageService/UpdatePackages.cs b/examples/Dfp/CSharp/v201611/PackageService/UpdatePackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PackageService/UpdatePackages.cs rename to examples/Dfp/CSharp/v201611/PackageService/UpdatePackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PlacementService/CreatePlacements.cs b/examples/Dfp/CSharp/v201611/PlacementService/CreatePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PlacementService/CreatePlacements.cs rename to examples/Dfp/CSharp/v201611/PlacementService/CreatePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PlacementService/DeactivatePlacement.cs b/examples/Dfp/CSharp/v201611/PlacementService/DeactivatePlacement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PlacementService/DeactivatePlacement.cs rename to examples/Dfp/CSharp/v201611/PlacementService/DeactivatePlacement.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PlacementService/GetActivePlacements.cs b/examples/Dfp/CSharp/v201611/PlacementService/GetActivePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PlacementService/GetActivePlacements.cs rename to examples/Dfp/CSharp/v201611/PlacementService/GetActivePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PlacementService/GetAllPlacements.cs b/examples/Dfp/CSharp/v201611/PlacementService/GetAllPlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PlacementService/GetAllPlacements.cs rename to examples/Dfp/CSharp/v201611/PlacementService/GetAllPlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PlacementService/UpdatePlacements.cs b/examples/Dfp/CSharp/v201611/PlacementService/UpdatePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PlacementService/UpdatePlacements.cs rename to examples/Dfp/CSharp/v201611/PlacementService/UpdatePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PremiumRateService/CreatePremiumRates.cs b/examples/Dfp/CSharp/v201611/PremiumRateService/CreatePremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PremiumRateService/CreatePremiumRates.cs rename to examples/Dfp/CSharp/v201611/PremiumRateService/CreatePremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PremiumRateService/GetAllPremiumRates.cs b/examples/Dfp/CSharp/v201611/PremiumRateService/GetAllPremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PremiumRateService/GetAllPremiumRates.cs rename to examples/Dfp/CSharp/v201611/PremiumRateService/GetAllPremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PremiumRateService/GetPremiumRatesForRateCard.cs b/examples/Dfp/CSharp/v201611/PremiumRateService/GetPremiumRatesForRateCard.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PremiumRateService/GetPremiumRatesForRateCard.cs rename to examples/Dfp/CSharp/v201611/PremiumRateService/GetPremiumRatesForRateCard.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PremiumRateService/UpdatePremiumRates.cs b/examples/Dfp/CSharp/v201611/PremiumRateService/UpdatePremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PremiumRateService/UpdatePremiumRates.cs rename to examples/Dfp/CSharp/v201611/PremiumRateService/UpdatePremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductPackageItemService/GetAllProductPackageItems.cs b/examples/Dfp/CSharp/v201611/ProductPackageItemService/GetAllProductPackageItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductPackageItemService/GetAllProductPackageItems.cs rename to examples/Dfp/CSharp/v201611/ProductPackageItemService/GetAllProductPackageItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs b/examples/Dfp/CSharp/v201611/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs rename to examples/Dfp/CSharp/v201611/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductPackageService/ActivateProductPackage.cs b/examples/Dfp/CSharp/v201611/ProductPackageService/ActivateProductPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductPackageService/ActivateProductPackage.cs rename to examples/Dfp/CSharp/v201611/ProductPackageService/ActivateProductPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductPackageService/CreateProductPackages.cs b/examples/Dfp/CSharp/v201611/ProductPackageService/CreateProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductPackageService/CreateProductPackages.cs rename to examples/Dfp/CSharp/v201611/ProductPackageService/CreateProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductPackageService/GetActiveProductPackages.cs b/examples/Dfp/CSharp/v201611/ProductPackageService/GetActiveProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductPackageService/GetActiveProductPackages.cs rename to examples/Dfp/CSharp/v201611/ProductPackageService/GetActiveProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductPackageService/GetAllProductPackages.cs b/examples/Dfp/CSharp/v201611/ProductPackageService/GetAllProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductPackageService/GetAllProductPackages.cs rename to examples/Dfp/CSharp/v201611/ProductPackageService/GetAllProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductPackageService/UpdateProductPackages.cs b/examples/Dfp/CSharp/v201611/ProductPackageService/UpdateProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductPackageService/UpdateProductPackages.cs rename to examples/Dfp/CSharp/v201611/ProductPackageService/UpdateProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201611/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201611/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductService/GetAllProducts.cs b/examples/Dfp/CSharp/v201611/ProductService/GetAllProducts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductService/GetAllProducts.cs rename to examples/Dfp/CSharp/v201611/ProductService/GetAllProducts.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductService/GetProductsForProductTemplate.cs b/examples/Dfp/CSharp/v201611/ProductService/GetProductsForProductTemplate.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductService/GetProductsForProductTemplate.cs rename to examples/Dfp/CSharp/v201611/ProductService/GetProductsForProductTemplate.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductService/PublishProgrammaticProductsToMarketplace.cs b/examples/Dfp/CSharp/v201611/ProductService/PublishProgrammaticProductsToMarketplace.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductService/PublishProgrammaticProductsToMarketplace.cs rename to examples/Dfp/CSharp/v201611/ProductService/PublishProgrammaticProductsToMarketplace.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductService/UpdateProducts.cs b/examples/Dfp/CSharp/v201611/ProductService/UpdateProducts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductService/UpdateProducts.cs rename to examples/Dfp/CSharp/v201611/ProductService/UpdateProducts.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/ActivateProductTemplates.cs b/examples/Dfp/CSharp/v201611/ProductTemplateService/ActivateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/ActivateProductTemplates.cs rename to examples/Dfp/CSharp/v201611/ProductTemplateService/ActivateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/CreateProductTemplates.cs b/examples/Dfp/CSharp/v201611/ProductTemplateService/CreateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/CreateProductTemplates.cs rename to examples/Dfp/CSharp/v201611/ProductTemplateService/CreateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/CreateProgrammaticProductTemplates.cs b/examples/Dfp/CSharp/v201611/ProductTemplateService/CreateProgrammaticProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/CreateProgrammaticProductTemplates.cs rename to examples/Dfp/CSharp/v201611/ProductTemplateService/CreateProgrammaticProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/GetAllProductTemplates.cs b/examples/Dfp/CSharp/v201611/ProductTemplateService/GetAllProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/GetAllProductTemplates.cs rename to examples/Dfp/CSharp/v201611/ProductTemplateService/GetAllProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/GetSponsorshipProductTemplates.cs b/examples/Dfp/CSharp/v201611/ProductTemplateService/GetSponsorshipProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/GetSponsorshipProductTemplates.cs rename to examples/Dfp/CSharp/v201611/ProductTemplateService/GetSponsorshipProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/UpdateProductTemplates.cs b/examples/Dfp/CSharp/v201611/ProductTemplateService/UpdateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProductTemplateService/UpdateProductTemplates.cs rename to examples/Dfp/CSharp/v201611/ProductTemplateService/UpdateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/ArchiveProposalLineItems.cs b/examples/Dfp/CSharp/v201611/ProposalLineItemService/ArchiveProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/ArchiveProposalLineItems.cs rename to examples/Dfp/CSharp/v201611/ProposalLineItemService/ArchiveProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs b/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs rename to examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProposalLineItems.cs b/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProposalLineItems.cs rename to examples/Dfp/CSharp/v201611/ProposalLineItemService/CreateProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/GetAllProposalLineItems.cs b/examples/Dfp/CSharp/v201611/ProposalLineItemService/GetAllProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/GetAllProposalLineItems.cs rename to examples/Dfp/CSharp/v201611/ProposalLineItemService/GetAllProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/GetProposalLineItemsForProposal.cs b/examples/Dfp/CSharp/v201611/ProposalLineItemService/GetProposalLineItemsForProposal.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/GetProposalLineItemsForProposal.cs rename to examples/Dfp/CSharp/v201611/ProposalLineItemService/GetProposalLineItemsForProposal.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/UpdateProposalLineItems.cs b/examples/Dfp/CSharp/v201611/ProposalLineItemService/UpdateProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalLineItemService/UpdateProposalLineItems.cs rename to examples/Dfp/CSharp/v201611/ProposalLineItemService/UpdateProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposals.cs b/examples/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposals.cs rename to examples/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201611/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/CreateProposals.cs b/examples/Dfp/CSharp/v201611/ProposalService/CreateProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/CreateProposals.cs rename to examples/Dfp/CSharp/v201611/ProposalService/CreateProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/GetAllProposals.cs b/examples/Dfp/CSharp/v201611/ProposalService/GetAllProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/GetAllProposals.cs rename to examples/Dfp/CSharp/v201611/ProposalService/GetAllProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/GetMarketplaceComments.cs b/examples/Dfp/CSharp/v201611/ProposalService/GetMarketplaceComments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/GetMarketplaceComments.cs rename to examples/Dfp/CSharp/v201611/ProposalService/GetMarketplaceComments.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/GetProposalsPendingApproval.cs b/examples/Dfp/CSharp/v201611/ProposalService/GetProposalsPendingApproval.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/GetProposalsPendingApproval.cs rename to examples/Dfp/CSharp/v201611/ProposalService/GetProposalsPendingApproval.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/RequestBuyerAcceptance.cs b/examples/Dfp/CSharp/v201611/ProposalService/RequestBuyerAcceptance.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/RequestBuyerAcceptance.cs rename to examples/Dfp/CSharp/v201611/ProposalService/RequestBuyerAcceptance.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/SubmitProposalsForApproval.cs b/examples/Dfp/CSharp/v201611/ProposalService/SubmitProposalsForApproval.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/SubmitProposalsForApproval.cs rename to examples/Dfp/CSharp/v201611/ProposalService/SubmitProposalsForApproval.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ProposalService/UpdateProposals.cs b/examples/Dfp/CSharp/v201611/ProposalService/UpdateProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ProposalService/UpdateProposals.cs rename to examples/Dfp/CSharp/v201611/ProposalService/UpdateProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/FetchMatchTables.cs b/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/FetchMatchTables.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/FetchMatchTables.cs rename to examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/FetchMatchTables.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs b/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs rename to examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs b/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs rename to examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetGeoTargets.cs b/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetGeoTargets.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetGeoTargets.cs rename to examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetGeoTargets.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetLineItemsNamedLike.cs b/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetLineItemsNamedLike.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetLineItemsNamedLike.cs rename to examples/Dfp/CSharp/v201611/PublisherQueryLanguageService/GetLineItemsNamedLike.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/RateCardService/GetAllRateCards.cs b/examples/Dfp/CSharp/v201611/RateCardService/GetAllRateCards.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/RateCardService/GetAllRateCards.cs rename to examples/Dfp/CSharp/v201611/RateCardService/GetAllRateCards.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/RateCardService/GetMarketplaceRateCards.cs b/examples/Dfp/CSharp/v201611/RateCardService/GetMarketplaceRateCards.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/RateCardService/GetMarketplaceRateCards.cs rename to examples/Dfp/CSharp/v201611/RateCardService/GetMarketplaceRateCards.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs b/examples/Dfp/CSharp/v201611/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201611/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs b/examples/Dfp/CSharp/v201611/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201611/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs b/examples/Dfp/CSharp/v201611/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201611/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReconciliationReportService/GetAllReconciliationReports.cs b/examples/Dfp/CSharp/v201611/ReconciliationReportService/GetAllReconciliationReports.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReconciliationReportService/GetAllReconciliationReports.cs rename to examples/Dfp/CSharp/v201611/ReconciliationReportService/GetAllReconciliationReports.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs b/examples/Dfp/CSharp/v201611/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs rename to examples/Dfp/CSharp/v201611/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReportService/RunDeliveryReport.cs b/examples/Dfp/CSharp/v201611/ReportService/RunDeliveryReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReportService/RunDeliveryReport.cs rename to examples/Dfp/CSharp/v201611/ReportService/RunDeliveryReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReportService/RunInventoryReport.cs b/examples/Dfp/CSharp/v201611/ReportService/RunInventoryReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReportService/RunInventoryReport.cs rename to examples/Dfp/CSharp/v201611/ReportService/RunInventoryReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReportService/RunReachReport.cs b/examples/Dfp/CSharp/v201611/ReportService/RunReachReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReportService/RunReachReport.cs rename to examples/Dfp/CSharp/v201611/ReportService/RunReachReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReportService/RunReportWithCustomFields.cs b/examples/Dfp/CSharp/v201611/ReportService/RunReportWithCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReportService/RunReportWithCustomFields.cs rename to examples/Dfp/CSharp/v201611/ReportService/RunReportWithCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReportService/RunSalesReport.cs b/examples/Dfp/CSharp/v201611/ReportService/RunSalesReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReportService/RunSalesReport.cs rename to examples/Dfp/CSharp/v201611/ReportService/RunSalesReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/ReportService/RunSavedQuery.cs b/examples/Dfp/CSharp/v201611/ReportService/RunSavedQuery.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/ReportService/RunSavedQuery.cs rename to examples/Dfp/CSharp/v201611/ReportService/RunSavedQuery.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201611/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201611/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201611/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/TeamService/CreateTeams.cs b/examples/Dfp/CSharp/v201611/TeamService/CreateTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/TeamService/CreateTeams.cs rename to examples/Dfp/CSharp/v201611/TeamService/CreateTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/TeamService/GetAllTeams.cs b/examples/Dfp/CSharp/v201611/TeamService/GetAllTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/TeamService/GetAllTeams.cs rename to examples/Dfp/CSharp/v201611/TeamService/GetAllTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/TeamService/UpdateTeams.cs b/examples/Dfp/CSharp/v201611/TeamService/UpdateTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/TeamService/UpdateTeams.cs rename to examples/Dfp/CSharp/v201611/TeamService/UpdateTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserService/CreateUsers.cs b/examples/Dfp/CSharp/v201611/UserService/CreateUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserService/CreateUsers.cs rename to examples/Dfp/CSharp/v201611/UserService/CreateUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserService/DeactivateUser.cs b/examples/Dfp/CSharp/v201611/UserService/DeactivateUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserService/DeactivateUser.cs rename to examples/Dfp/CSharp/v201611/UserService/DeactivateUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserService/GetAllRoles.cs b/examples/Dfp/CSharp/v201611/UserService/GetAllRoles.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserService/GetAllRoles.cs rename to examples/Dfp/CSharp/v201611/UserService/GetAllRoles.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserService/GetAllUsers.cs b/examples/Dfp/CSharp/v201611/UserService/GetAllUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserService/GetAllUsers.cs rename to examples/Dfp/CSharp/v201611/UserService/GetAllUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserService/GetCurrentUser.cs b/examples/Dfp/CSharp/v201611/UserService/GetCurrentUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserService/GetCurrentUser.cs rename to examples/Dfp/CSharp/v201611/UserService/GetCurrentUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserService/GetUserByEmailAddress.cs b/examples/Dfp/CSharp/v201611/UserService/GetUserByEmailAddress.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserService/GetUserByEmailAddress.cs rename to examples/Dfp/CSharp/v201611/UserService/GetUserByEmailAddress.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserService/UpdateUsers.cs b/examples/Dfp/CSharp/v201611/UserService/UpdateUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserService/UpdateUsers.cs rename to examples/Dfp/CSharp/v201611/UserService/UpdateUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/CreateUserTeamAssociations.cs b/examples/Dfp/CSharp/v201611/UserTeamAssociationService/CreateUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/CreateUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201611/UserTeamAssociationService/CreateUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/DeleteUserTeamAssociations.cs b/examples/Dfp/CSharp/v201611/UserTeamAssociationService/DeleteUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/DeleteUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201611/UserTeamAssociationService/DeleteUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/GetAllUserTeamAssociations.cs b/examples/Dfp/CSharp/v201611/UserTeamAssociationService/GetAllUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/GetAllUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201611/UserTeamAssociationService/GetAllUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs b/examples/Dfp/CSharp/v201611/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs rename to examples/Dfp/CSharp/v201611/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/UpdateUserTeamAssociations.cs b/examples/Dfp/CSharp/v201611/UserTeamAssociationService/UpdateUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/UserTeamAssociationService/UpdateUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201611/UserTeamAssociationService/UpdateUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs b/examples/Dfp/CSharp/v201611/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs rename to examples/Dfp/CSharp/v201611/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowApprovalRequests.cs b/examples/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowApprovalRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowApprovalRequests.cs rename to examples/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowApprovalRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs b/examples/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs rename to examples/Dfp/CSharp/v201611/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201611/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs b/examples/Dfp/CSharp/v201611/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201611/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs rename to examples/Dfp/CSharp/v201611/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ActivityGroupService/CreateActivityGroups.cs b/examples/Dfp/CSharp/v201702/ActivityGroupService/CreateActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ActivityGroupService/CreateActivityGroups.cs rename to examples/Dfp/CSharp/v201702/ActivityGroupService/CreateActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ActivityGroupService/GetActiveActivityGroups.cs b/examples/Dfp/CSharp/v201702/ActivityGroupService/GetActiveActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ActivityGroupService/GetActiveActivityGroups.cs rename to examples/Dfp/CSharp/v201702/ActivityGroupService/GetActiveActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ActivityGroupService/GetAllActivityGroups.cs b/examples/Dfp/CSharp/v201702/ActivityGroupService/GetAllActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ActivityGroupService/GetAllActivityGroups.cs rename to examples/Dfp/CSharp/v201702/ActivityGroupService/GetAllActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ActivityGroupService/UpdateActivityGroups.cs b/examples/Dfp/CSharp/v201702/ActivityGroupService/UpdateActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ActivityGroupService/UpdateActivityGroups.cs rename to examples/Dfp/CSharp/v201702/ActivityGroupService/UpdateActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ActivityService/CreateActivities.cs b/examples/Dfp/CSharp/v201702/ActivityService/CreateActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ActivityService/CreateActivities.cs rename to examples/Dfp/CSharp/v201702/ActivityService/CreateActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ActivityService/GetActiveActivities.cs b/examples/Dfp/CSharp/v201702/ActivityService/GetActiveActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ActivityService/GetActiveActivities.cs rename to examples/Dfp/CSharp/v201702/ActivityService/GetActiveActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ActivityService/GetAllActivities.cs b/examples/Dfp/CSharp/v201702/ActivityService/GetAllActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ActivityService/GetAllActivities.cs rename to examples/Dfp/CSharp/v201702/ActivityService/GetAllActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ActivityService/UpdateActivities.cs b/examples/Dfp/CSharp/v201702/ActivityService/UpdateActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ActivityService/UpdateActivities.cs rename to examples/Dfp/CSharp/v201702/ActivityService/UpdateActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/CreateAudienceSegments.cs b/examples/Dfp/CSharp/v201702/AudienceSegmentService/CreateAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/CreateAudienceSegments.cs rename to examples/Dfp/CSharp/v201702/AudienceSegmentService/CreateAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/GetAllAudienceSegments.cs b/examples/Dfp/CSharp/v201702/AudienceSegmentService/GetAllAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/GetAllAudienceSegments.cs rename to examples/Dfp/CSharp/v201702/AudienceSegmentService/GetAllAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/GetFirstPartyAudienceSegments.cs b/examples/Dfp/CSharp/v201702/AudienceSegmentService/GetFirstPartyAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/GetFirstPartyAudienceSegments.cs rename to examples/Dfp/CSharp/v201702/AudienceSegmentService/GetFirstPartyAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs b/examples/Dfp/CSharp/v201702/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs rename to examples/Dfp/CSharp/v201702/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/UpdateAudienceSegments.cs b/examples/Dfp/CSharp/v201702/AudienceSegmentService/UpdateAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/AudienceSegmentService/UpdateAudienceSegments.cs rename to examples/Dfp/CSharp/v201702/AudienceSegmentService/UpdateAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/BaseRateService/CreateProductBaseRates.cs b/examples/Dfp/CSharp/v201702/BaseRateService/CreateProductBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/BaseRateService/CreateProductBaseRates.cs rename to examples/Dfp/CSharp/v201702/BaseRateService/CreateProductBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/BaseRateService/CreateProductTemplateBaseRates.cs b/examples/Dfp/CSharp/v201702/BaseRateService/CreateProductTemplateBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/BaseRateService/CreateProductTemplateBaseRates.cs rename to examples/Dfp/CSharp/v201702/BaseRateService/CreateProductTemplateBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/BaseRateService/GetAllBaseRates.cs b/examples/Dfp/CSharp/v201702/BaseRateService/GetAllBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/BaseRateService/GetAllBaseRates.cs rename to examples/Dfp/CSharp/v201702/BaseRateService/GetAllBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/BaseRateService/GetBaseRatesForRateCard.cs b/examples/Dfp/CSharp/v201702/BaseRateService/GetBaseRatesForRateCard.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/BaseRateService/GetBaseRatesForRateCard.cs rename to examples/Dfp/CSharp/v201702/BaseRateService/GetBaseRatesForRateCard.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/BaseRateService/UpdateBaseRates.cs b/examples/Dfp/CSharp/v201702/BaseRateService/UpdateBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/BaseRateService/UpdateBaseRates.cs rename to examples/Dfp/CSharp/v201702/BaseRateService/UpdateBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CompanyService/CreateCompanies.cs b/examples/Dfp/CSharp/v201702/CompanyService/CreateCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CompanyService/CreateCompanies.cs rename to examples/Dfp/CSharp/v201702/CompanyService/CreateCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CompanyService/GetAdvertisers.cs b/examples/Dfp/CSharp/v201702/CompanyService/GetAdvertisers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CompanyService/GetAdvertisers.cs rename to examples/Dfp/CSharp/v201702/CompanyService/GetAdvertisers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CompanyService/GetAllCompanies.cs b/examples/Dfp/CSharp/v201702/CompanyService/GetAllCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CompanyService/GetAllCompanies.cs rename to examples/Dfp/CSharp/v201702/CompanyService/GetAllCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CompanyService/UpdateCompanies.cs b/examples/Dfp/CSharp/v201702/CompanyService/UpdateCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CompanyService/UpdateCompanies.cs rename to examples/Dfp/CSharp/v201702/CompanyService/UpdateCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContactService/CreateContacts.cs b/examples/Dfp/CSharp/v201702/ContactService/CreateContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContactService/CreateContacts.cs rename to examples/Dfp/CSharp/v201702/ContactService/CreateContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContactService/GetAllContacts.cs b/examples/Dfp/CSharp/v201702/ContactService/GetAllContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContactService/GetAllContacts.cs rename to examples/Dfp/CSharp/v201702/ContactService/GetAllContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContactService/GetUninvitedContacts.cs b/examples/Dfp/CSharp/v201702/ContactService/GetUninvitedContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContactService/GetUninvitedContacts.cs rename to examples/Dfp/CSharp/v201702/ContactService/GetUninvitedContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContactService/UpdateContacts.cs b/examples/Dfp/CSharp/v201702/ContactService/UpdateContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContactService/UpdateContacts.cs rename to examples/Dfp/CSharp/v201702/ContactService/UpdateContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201702/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ContentService/GetAllContent.cs b/examples/Dfp/CSharp/v201702/ContentService/GetAllContent.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ContentService/GetAllContent.cs rename to examples/Dfp/CSharp/v201702/ContentService/GetAllContent.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeService/CopyImageCreatives.cs b/examples/Dfp/CSharp/v201702/CreativeService/CopyImageCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeService/CopyImageCreatives.cs rename to examples/Dfp/CSharp/v201702/CreativeService/CopyImageCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeService/CreateCreativeFromTemplate.cs b/examples/Dfp/CSharp/v201702/CreativeService/CreateCreativeFromTemplate.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeService/CreateCreativeFromTemplate.cs rename to examples/Dfp/CSharp/v201702/CreativeService/CreateCreativeFromTemplate.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeService/CreateCreatives.cs b/examples/Dfp/CSharp/v201702/CreativeService/CreateCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeService/CreateCreatives.cs rename to examples/Dfp/CSharp/v201702/CreativeService/CreateCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeService/CreateCustomCreative.cs b/examples/Dfp/CSharp/v201702/CreativeService/CreateCustomCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeService/CreateCustomCreative.cs rename to examples/Dfp/CSharp/v201702/CreativeService/CreateCustomCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeService/CreateNativeCreative.cs b/examples/Dfp/CSharp/v201702/CreativeService/CreateNativeCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeService/CreateNativeCreative.cs rename to examples/Dfp/CSharp/v201702/CreativeService/CreateNativeCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeService/GetAllCreatives.cs b/examples/Dfp/CSharp/v201702/CreativeService/GetAllCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeService/GetAllCreatives.cs rename to examples/Dfp/CSharp/v201702/CreativeService/GetAllCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeService/GetImageCreatives.cs b/examples/Dfp/CSharp/v201702/CreativeService/GetImageCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeService/GetImageCreatives.cs rename to examples/Dfp/CSharp/v201702/CreativeService/GetImageCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeService/UpdateCreatives.cs b/examples/Dfp/CSharp/v201702/CreativeService/UpdateCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeService/UpdateCreatives.cs rename to examples/Dfp/CSharp/v201702/CreativeService/UpdateCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeSetService/GetAllCreativeSets.cs b/examples/Dfp/CSharp/v201702/CreativeSetService/GetAllCreativeSets.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeSetService/GetAllCreativeSets.cs rename to examples/Dfp/CSharp/v201702/CreativeSetService/GetAllCreativeSets.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeSetService/GetCreativeSetsForMasterCreative.cs b/examples/Dfp/CSharp/v201702/CreativeSetService/GetCreativeSetsForMasterCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeSetService/GetCreativeSetsForMasterCreative.cs rename to examples/Dfp/CSharp/v201702/CreativeSetService/GetCreativeSetsForMasterCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeTemplateService/GetAllCreativeTemplates.cs b/examples/Dfp/CSharp/v201702/CreativeTemplateService/GetAllCreativeTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeTemplateService/GetAllCreativeTemplates.cs rename to examples/Dfp/CSharp/v201702/CreativeTemplateService/GetAllCreativeTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs b/examples/Dfp/CSharp/v201702/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs rename to examples/Dfp/CSharp/v201702/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/CreateCreativeWrappers.cs b/examples/Dfp/CSharp/v201702/CreativeWrapperService/CreateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/CreateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201702/CreativeWrapperService/CreateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/DeactivateCreativeWrappers.cs b/examples/Dfp/CSharp/v201702/CreativeWrapperService/DeactivateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/DeactivateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201702/CreativeWrapperService/DeactivateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/GetActiveCreativeWrappers.cs b/examples/Dfp/CSharp/v201702/CreativeWrapperService/GetActiveCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/GetActiveCreativeWrappers.cs rename to examples/Dfp/CSharp/v201702/CreativeWrapperService/GetActiveCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/GetAllCreativeWrappers.cs b/examples/Dfp/CSharp/v201702/CreativeWrapperService/GetAllCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/GetAllCreativeWrappers.cs rename to examples/Dfp/CSharp/v201702/CreativeWrapperService/GetAllCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/UpdateCreativeWrappers.cs b/examples/Dfp/CSharp/v201702/CreativeWrapperService/UpdateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CreativeWrapperService/UpdateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201702/CreativeWrapperService/UpdateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFieldOptions.cs b/examples/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFieldOptions.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFieldOptions.cs rename to examples/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFieldOptions.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFields.cs b/examples/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFields.cs rename to examples/Dfp/CSharp/v201702/CustomFieldService/CreateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomFieldService/DeactivateCustomFields.cs b/examples/Dfp/CSharp/v201702/CustomFieldService/DeactivateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomFieldService/DeactivateCustomFields.cs rename to examples/Dfp/CSharp/v201702/CustomFieldService/DeactivateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomFieldService/GetAllCustomFields.cs b/examples/Dfp/CSharp/v201702/CustomFieldService/GetAllCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomFieldService/GetAllCustomFields.cs rename to examples/Dfp/CSharp/v201702/CustomFieldService/GetAllCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomFieldService/GetCustomFieldsForLineItems.cs b/examples/Dfp/CSharp/v201702/CustomFieldService/GetCustomFieldsForLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomFieldService/GetCustomFieldsForLineItems.cs rename to examples/Dfp/CSharp/v201702/CustomFieldService/GetCustomFieldsForLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomFieldService/SetLineItemCustomFieldValue.cs b/examples/Dfp/CSharp/v201702/CustomFieldService/SetLineItemCustomFieldValue.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomFieldService/SetLineItemCustomFieldValue.cs rename to examples/Dfp/CSharp/v201702/CustomFieldService/SetLineItemCustomFieldValue.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomFieldService/UpdateCustomFields.cs b/examples/Dfp/CSharp/v201702/CustomFieldService/UpdateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomFieldService/UpdateCustomFields.cs rename to examples/Dfp/CSharp/v201702/CustomFieldService/UpdateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201702/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201702/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201702/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201702/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201702/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201702/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingKeys.cs b/examples/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingKeys.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingKeys.cs rename to examples/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingKeys.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingValues.cs b/examples/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingValues.cs rename to examples/Dfp/CSharp/v201702/CustomTargetingService/UpdateCustomTargetingValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ExchangeRateService/CreateExchangeRates.cs b/examples/Dfp/CSharp/v201702/ExchangeRateService/CreateExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ExchangeRateService/CreateExchangeRates.cs rename to examples/Dfp/CSharp/v201702/ExchangeRateService/CreateExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ExchangeRateService/GetAllExchangeRates.cs b/examples/Dfp/CSharp/v201702/ExchangeRateService/GetAllExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ExchangeRateService/GetAllExchangeRates.cs rename to examples/Dfp/CSharp/v201702/ExchangeRateService/GetAllExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs b/examples/Dfp/CSharp/v201702/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs rename to examples/Dfp/CSharp/v201702/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ExchangeRateService/UpdateExchangeRates.cs b/examples/Dfp/CSharp/v201702/ExchangeRateService/UpdateExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ExchangeRateService/UpdateExchangeRates.cs rename to examples/Dfp/CSharp/v201702/ExchangeRateService/UpdateExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecast.cs b/examples/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecast.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecast.cs rename to examples/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecast.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecastById.cs b/examples/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecastById.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecastById.cs rename to examples/Dfp/CSharp/v201702/ForecastService/GetAvailabilityForecastById.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ForecastService/GetDeliveryForecastByIds.cs b/examples/Dfp/CSharp/v201702/ForecastService/GetDeliveryForecastByIds.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ForecastService/GetDeliveryForecastByIds.cs rename to examples/Dfp/CSharp/v201702/ForecastService/GetDeliveryForecastByIds.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/InventoryService/CreateAdUnits.cs b/examples/Dfp/CSharp/v201702/InventoryService/CreateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/InventoryService/CreateAdUnits.cs rename to examples/Dfp/CSharp/v201702/InventoryService/CreateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/InventoryService/CreateVideoAdUnit.cs b/examples/Dfp/CSharp/v201702/InventoryService/CreateVideoAdUnit.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/InventoryService/CreateVideoAdUnit.cs rename to examples/Dfp/CSharp/v201702/InventoryService/CreateVideoAdUnit.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/InventoryService/DeActivateAdUnits.cs b/examples/Dfp/CSharp/v201702/InventoryService/DeActivateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/InventoryService/DeActivateAdUnits.cs rename to examples/Dfp/CSharp/v201702/InventoryService/DeActivateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/InventoryService/GetAdUnitsByStatement.cs b/examples/Dfp/CSharp/v201702/InventoryService/GetAdUnitsByStatement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/InventoryService/GetAdUnitsByStatement.cs rename to examples/Dfp/CSharp/v201702/InventoryService/GetAdUnitsByStatement.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/InventoryService/GetAllAdUnitSizes.cs b/examples/Dfp/CSharp/v201702/InventoryService/GetAllAdUnitSizes.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/InventoryService/GetAllAdUnitSizes.cs rename to examples/Dfp/CSharp/v201702/InventoryService/GetAllAdUnitSizes.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/InventoryService/GetAllAdUnits.cs b/examples/Dfp/CSharp/v201702/InventoryService/GetAllAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/InventoryService/GetAllAdUnits.cs rename to examples/Dfp/CSharp/v201702/InventoryService/GetAllAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/InventoryService/GetInventoryTree.cs b/examples/Dfp/CSharp/v201702/InventoryService/GetInventoryTree.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/InventoryService/GetInventoryTree.cs rename to examples/Dfp/CSharp/v201702/InventoryService/GetInventoryTree.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/InventoryService/UpdateAdUnits.cs b/examples/Dfp/CSharp/v201702/InventoryService/UpdateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/InventoryService/UpdateAdUnits.cs rename to examples/Dfp/CSharp/v201702/InventoryService/UpdateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LabelService/CreateLabels.cs b/examples/Dfp/CSharp/v201702/LabelService/CreateLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LabelService/CreateLabels.cs rename to examples/Dfp/CSharp/v201702/LabelService/CreateLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LabelService/DeactivateActiveLabels.cs b/examples/Dfp/CSharp/v201702/LabelService/DeactivateActiveLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LabelService/DeactivateActiveLabels.cs rename to examples/Dfp/CSharp/v201702/LabelService/DeactivateActiveLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LabelService/GetActiveLabels.cs b/examples/Dfp/CSharp/v201702/LabelService/GetActiveLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LabelService/GetActiveLabels.cs rename to examples/Dfp/CSharp/v201702/LabelService/GetActiveLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LabelService/GetAllLabels.cs b/examples/Dfp/CSharp/v201702/LabelService/GetAllLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LabelService/GetAllLabels.cs rename to examples/Dfp/CSharp/v201702/LabelService/GetAllLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LabelService/UpdateLabels.cs b/examples/Dfp/CSharp/v201702/LabelService/UpdateLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LabelService/UpdateLabels.cs rename to examples/Dfp/CSharp/v201702/LabelService/UpdateLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/ActivateLicas.cs b/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/ActivateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/ActivateLicas.cs rename to examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/ActivateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/CreateLicas.cs b/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/CreateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/CreateLicas.cs rename to examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/CreateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/DeactivateLicas.cs b/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/DeactivateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/DeactivateLicas.cs rename to examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/DeactivateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetAllLicas.cs b/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetAllLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetAllLicas.cs rename to examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetAllLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetLicasForLineItem.cs b/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetLicasForLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetLicasForLineItem.cs rename to examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/GetLicasForLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/UpdateLicas.cs b/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/UpdateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/UpdateLicas.cs rename to examples/Dfp/CSharp/v201702/LineItemCreativeAssociationService/UpdateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemService/ActivateLineItem.cs b/examples/Dfp/CSharp/v201702/LineItemService/ActivateLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemService/ActivateLineItem.cs rename to examples/Dfp/CSharp/v201702/LineItemService/ActivateLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemService/CreateLineItems.cs b/examples/Dfp/CSharp/v201702/LineItemService/CreateLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemService/CreateLineItems.cs rename to examples/Dfp/CSharp/v201702/LineItemService/CreateLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemService/CreateVideoLineItem.cs b/examples/Dfp/CSharp/v201702/LineItemService/CreateVideoLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemService/CreateVideoLineItem.cs rename to examples/Dfp/CSharp/v201702/LineItemService/CreateVideoLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemService/GetAllLineItems.cs b/examples/Dfp/CSharp/v201702/LineItemService/GetAllLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemService/GetAllLineItems.cs rename to examples/Dfp/CSharp/v201702/LineItemService/GetAllLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemService/GetLineItemsThatNeedCreatives.cs b/examples/Dfp/CSharp/v201702/LineItemService/GetLineItemsThatNeedCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemService/GetLineItemsThatNeedCreatives.cs rename to examples/Dfp/CSharp/v201702/LineItemService/GetLineItemsThatNeedCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemService/GetRecentlyUpdatedLineItems.cs b/examples/Dfp/CSharp/v201702/LineItemService/GetRecentlyUpdatedLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemService/GetRecentlyUpdatedLineItems.cs rename to examples/Dfp/CSharp/v201702/LineItemService/GetRecentlyUpdatedLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemService/TargetCustomCriteria.cs b/examples/Dfp/CSharp/v201702/LineItemService/TargetCustomCriteria.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemService/TargetCustomCriteria.cs rename to examples/Dfp/CSharp/v201702/LineItemService/TargetCustomCriteria.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/LineItemService/UpdateLineItems.cs b/examples/Dfp/CSharp/v201702/LineItemService/UpdateLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/LineItemService/UpdateLineItems.cs rename to examples/Dfp/CSharp/v201702/LineItemService/UpdateLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/NativeStyleService/CreateNativeStyles.cs b/examples/Dfp/CSharp/v201702/NativeStyleService/CreateNativeStyles.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/NativeStyleService/CreateNativeStyles.cs rename to examples/Dfp/CSharp/v201702/NativeStyleService/CreateNativeStyles.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/NativeStyleService/GetAllNativeStyles.cs b/examples/Dfp/CSharp/v201702/NativeStyleService/GetAllNativeStyles.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/NativeStyleService/GetAllNativeStyles.cs rename to examples/Dfp/CSharp/v201702/NativeStyleService/GetAllNativeStyles.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/NetworkService/GetAllNetworks.cs b/examples/Dfp/CSharp/v201702/NetworkService/GetAllNetworks.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/NetworkService/GetAllNetworks.cs rename to examples/Dfp/CSharp/v201702/NetworkService/GetAllNetworks.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/NetworkService/GetCurrentNetwork.cs b/examples/Dfp/CSharp/v201702/NetworkService/GetCurrentNetwork.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/NetworkService/GetCurrentNetwork.cs rename to examples/Dfp/CSharp/v201702/NetworkService/GetCurrentNetwork.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/NetworkService/MakeTestNetwork.cs b/examples/Dfp/CSharp/v201702/NetworkService/MakeTestNetwork.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/NetworkService/MakeTestNetwork.cs rename to examples/Dfp/CSharp/v201702/NetworkService/MakeTestNetwork.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/OrderService/ApproveOrder.cs b/examples/Dfp/CSharp/v201702/OrderService/ApproveOrder.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/OrderService/ApproveOrder.cs rename to examples/Dfp/CSharp/v201702/OrderService/ApproveOrder.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/OrderService/CreateOrders.cs b/examples/Dfp/CSharp/v201702/OrderService/CreateOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/OrderService/CreateOrders.cs rename to examples/Dfp/CSharp/v201702/OrderService/CreateOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/OrderService/GetAllOrders.cs b/examples/Dfp/CSharp/v201702/OrderService/GetAllOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/OrderService/GetAllOrders.cs rename to examples/Dfp/CSharp/v201702/OrderService/GetAllOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/OrderService/GetOrdersStartingSoon.cs b/examples/Dfp/CSharp/v201702/OrderService/GetOrdersStartingSoon.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/OrderService/GetOrdersStartingSoon.cs rename to examples/Dfp/CSharp/v201702/OrderService/GetOrdersStartingSoon.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/OrderService/UpdateOrders.cs b/examples/Dfp/CSharp/v201702/OrderService/UpdateOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/OrderService/UpdateOrders.cs rename to examples/Dfp/CSharp/v201702/OrderService/UpdateOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PackageService/CreatePackages.cs b/examples/Dfp/CSharp/v201702/PackageService/CreatePackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PackageService/CreatePackages.cs rename to examples/Dfp/CSharp/v201702/PackageService/CreatePackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PackageService/CreateProposalLineItemsFromPackage.cs b/examples/Dfp/CSharp/v201702/PackageService/CreateProposalLineItemsFromPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PackageService/CreateProposalLineItemsFromPackage.cs rename to examples/Dfp/CSharp/v201702/PackageService/CreateProposalLineItemsFromPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PackageService/GetAllPackages.cs b/examples/Dfp/CSharp/v201702/PackageService/GetAllPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PackageService/GetAllPackages.cs rename to examples/Dfp/CSharp/v201702/PackageService/GetAllPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PackageService/GetInProgressPackages.cs b/examples/Dfp/CSharp/v201702/PackageService/GetInProgressPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PackageService/GetInProgressPackages.cs rename to examples/Dfp/CSharp/v201702/PackageService/GetInProgressPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PackageService/UpdatePackages.cs b/examples/Dfp/CSharp/v201702/PackageService/UpdatePackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PackageService/UpdatePackages.cs rename to examples/Dfp/CSharp/v201702/PackageService/UpdatePackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PlacementService/CreatePlacements.cs b/examples/Dfp/CSharp/v201702/PlacementService/CreatePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PlacementService/CreatePlacements.cs rename to examples/Dfp/CSharp/v201702/PlacementService/CreatePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PlacementService/DeactivatePlacement.cs b/examples/Dfp/CSharp/v201702/PlacementService/DeactivatePlacement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PlacementService/DeactivatePlacement.cs rename to examples/Dfp/CSharp/v201702/PlacementService/DeactivatePlacement.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PlacementService/GetActivePlacements.cs b/examples/Dfp/CSharp/v201702/PlacementService/GetActivePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PlacementService/GetActivePlacements.cs rename to examples/Dfp/CSharp/v201702/PlacementService/GetActivePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PlacementService/GetAllPlacements.cs b/examples/Dfp/CSharp/v201702/PlacementService/GetAllPlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PlacementService/GetAllPlacements.cs rename to examples/Dfp/CSharp/v201702/PlacementService/GetAllPlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PlacementService/UpdatePlacements.cs b/examples/Dfp/CSharp/v201702/PlacementService/UpdatePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PlacementService/UpdatePlacements.cs rename to examples/Dfp/CSharp/v201702/PlacementService/UpdatePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PremiumRateService/CreatePremiumRates.cs b/examples/Dfp/CSharp/v201702/PremiumRateService/CreatePremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PremiumRateService/CreatePremiumRates.cs rename to examples/Dfp/CSharp/v201702/PremiumRateService/CreatePremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PremiumRateService/GetAllPremiumRates.cs b/examples/Dfp/CSharp/v201702/PremiumRateService/GetAllPremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PremiumRateService/GetAllPremiumRates.cs rename to examples/Dfp/CSharp/v201702/PremiumRateService/GetAllPremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PremiumRateService/GetPremiumRatesForRateCard.cs b/examples/Dfp/CSharp/v201702/PremiumRateService/GetPremiumRatesForRateCard.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PremiumRateService/GetPremiumRatesForRateCard.cs rename to examples/Dfp/CSharp/v201702/PremiumRateService/GetPremiumRatesForRateCard.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PremiumRateService/UpdatePremiumRates.cs b/examples/Dfp/CSharp/v201702/PremiumRateService/UpdatePremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PremiumRateService/UpdatePremiumRates.cs rename to examples/Dfp/CSharp/v201702/PremiumRateService/UpdatePremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductPackageItemService/GetAllProductPackageItems.cs b/examples/Dfp/CSharp/v201702/ProductPackageItemService/GetAllProductPackageItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductPackageItemService/GetAllProductPackageItems.cs rename to examples/Dfp/CSharp/v201702/ProductPackageItemService/GetAllProductPackageItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs b/examples/Dfp/CSharp/v201702/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs rename to examples/Dfp/CSharp/v201702/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductPackageService/ActivateProductPackage.cs b/examples/Dfp/CSharp/v201702/ProductPackageService/ActivateProductPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductPackageService/ActivateProductPackage.cs rename to examples/Dfp/CSharp/v201702/ProductPackageService/ActivateProductPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductPackageService/CreateProductPackages.cs b/examples/Dfp/CSharp/v201702/ProductPackageService/CreateProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductPackageService/CreateProductPackages.cs rename to examples/Dfp/CSharp/v201702/ProductPackageService/CreateProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductPackageService/GetActiveProductPackages.cs b/examples/Dfp/CSharp/v201702/ProductPackageService/GetActiveProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductPackageService/GetActiveProductPackages.cs rename to examples/Dfp/CSharp/v201702/ProductPackageService/GetActiveProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductPackageService/GetAllProductPackages.cs b/examples/Dfp/CSharp/v201702/ProductPackageService/GetAllProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductPackageService/GetAllProductPackages.cs rename to examples/Dfp/CSharp/v201702/ProductPackageService/GetAllProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductPackageService/UpdateProductPackages.cs b/examples/Dfp/CSharp/v201702/ProductPackageService/UpdateProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductPackageService/UpdateProductPackages.cs rename to examples/Dfp/CSharp/v201702/ProductPackageService/UpdateProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201702/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201702/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductService/GetAllProducts.cs b/examples/Dfp/CSharp/v201702/ProductService/GetAllProducts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductService/GetAllProducts.cs rename to examples/Dfp/CSharp/v201702/ProductService/GetAllProducts.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductService/GetProductsForProductTemplate.cs b/examples/Dfp/CSharp/v201702/ProductService/GetProductsForProductTemplate.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductService/GetProductsForProductTemplate.cs rename to examples/Dfp/CSharp/v201702/ProductService/GetProductsForProductTemplate.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductService/PublishProgrammaticProductsToMarketplace.cs b/examples/Dfp/CSharp/v201702/ProductService/PublishProgrammaticProductsToMarketplace.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductService/PublishProgrammaticProductsToMarketplace.cs rename to examples/Dfp/CSharp/v201702/ProductService/PublishProgrammaticProductsToMarketplace.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductService/UpdateProducts.cs b/examples/Dfp/CSharp/v201702/ProductService/UpdateProducts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductService/UpdateProducts.cs rename to examples/Dfp/CSharp/v201702/ProductService/UpdateProducts.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/ActivateProductTemplates.cs b/examples/Dfp/CSharp/v201702/ProductTemplateService/ActivateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/ActivateProductTemplates.cs rename to examples/Dfp/CSharp/v201702/ProductTemplateService/ActivateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/CreateProductTemplates.cs b/examples/Dfp/CSharp/v201702/ProductTemplateService/CreateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/CreateProductTemplates.cs rename to examples/Dfp/CSharp/v201702/ProductTemplateService/CreateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/CreateProgrammaticProductTemplates.cs b/examples/Dfp/CSharp/v201702/ProductTemplateService/CreateProgrammaticProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/CreateProgrammaticProductTemplates.cs rename to examples/Dfp/CSharp/v201702/ProductTemplateService/CreateProgrammaticProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/GetAllProductTemplates.cs b/examples/Dfp/CSharp/v201702/ProductTemplateService/GetAllProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/GetAllProductTemplates.cs rename to examples/Dfp/CSharp/v201702/ProductTemplateService/GetAllProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/GetSponsorshipProductTemplates.cs b/examples/Dfp/CSharp/v201702/ProductTemplateService/GetSponsorshipProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/GetSponsorshipProductTemplates.cs rename to examples/Dfp/CSharp/v201702/ProductTemplateService/GetSponsorshipProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/UpdateProductTemplates.cs b/examples/Dfp/CSharp/v201702/ProductTemplateService/UpdateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProductTemplateService/UpdateProductTemplates.cs rename to examples/Dfp/CSharp/v201702/ProductTemplateService/UpdateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/ArchiveProposalLineItems.cs b/examples/Dfp/CSharp/v201702/ProposalLineItemService/ArchiveProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/ArchiveProposalLineItems.cs rename to examples/Dfp/CSharp/v201702/ProposalLineItemService/ArchiveProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs b/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs rename to examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProposalLineItems.cs b/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProposalLineItems.cs rename to examples/Dfp/CSharp/v201702/ProposalLineItemService/CreateProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/GetAllProposalLineItems.cs b/examples/Dfp/CSharp/v201702/ProposalLineItemService/GetAllProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/GetAllProposalLineItems.cs rename to examples/Dfp/CSharp/v201702/ProposalLineItemService/GetAllProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/GetProposalLineItemsForProposal.cs b/examples/Dfp/CSharp/v201702/ProposalLineItemService/GetProposalLineItemsForProposal.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/GetProposalLineItemsForProposal.cs rename to examples/Dfp/CSharp/v201702/ProposalLineItemService/GetProposalLineItemsForProposal.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/UpdateProposalLineItems.cs b/examples/Dfp/CSharp/v201702/ProposalLineItemService/UpdateProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalLineItemService/UpdateProposalLineItems.cs rename to examples/Dfp/CSharp/v201702/ProposalLineItemService/UpdateProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposals.cs b/examples/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposals.cs rename to examples/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201702/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/CreateProposals.cs b/examples/Dfp/CSharp/v201702/ProposalService/CreateProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/CreateProposals.cs rename to examples/Dfp/CSharp/v201702/ProposalService/CreateProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/GetAllProposals.cs b/examples/Dfp/CSharp/v201702/ProposalService/GetAllProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/GetAllProposals.cs rename to examples/Dfp/CSharp/v201702/ProposalService/GetAllProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/GetMarketplaceComments.cs b/examples/Dfp/CSharp/v201702/ProposalService/GetMarketplaceComments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/GetMarketplaceComments.cs rename to examples/Dfp/CSharp/v201702/ProposalService/GetMarketplaceComments.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/GetProposalsPendingApproval.cs b/examples/Dfp/CSharp/v201702/ProposalService/GetProposalsPendingApproval.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/GetProposalsPendingApproval.cs rename to examples/Dfp/CSharp/v201702/ProposalService/GetProposalsPendingApproval.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/RequestBuyerAcceptance.cs b/examples/Dfp/CSharp/v201702/ProposalService/RequestBuyerAcceptance.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/RequestBuyerAcceptance.cs rename to examples/Dfp/CSharp/v201702/ProposalService/RequestBuyerAcceptance.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/SubmitProposalsForApproval.cs b/examples/Dfp/CSharp/v201702/ProposalService/SubmitProposalsForApproval.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/SubmitProposalsForApproval.cs rename to examples/Dfp/CSharp/v201702/ProposalService/SubmitProposalsForApproval.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ProposalService/UpdateProposals.cs b/examples/Dfp/CSharp/v201702/ProposalService/UpdateProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ProposalService/UpdateProposals.cs rename to examples/Dfp/CSharp/v201702/ProposalService/UpdateProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/FetchMatchTables.cs b/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/FetchMatchTables.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/FetchMatchTables.cs rename to examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/FetchMatchTables.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs b/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs rename to examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs b/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs rename to examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetGeoTargets.cs b/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetGeoTargets.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetGeoTargets.cs rename to examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetGeoTargets.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetLineItemsNamedLike.cs b/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetLineItemsNamedLike.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetLineItemsNamedLike.cs rename to examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetLineItemsNamedLike.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetRecentChanges.cs b/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetRecentChanges.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetRecentChanges.cs rename to examples/Dfp/CSharp/v201702/PublisherQueryLanguageService/GetRecentChanges.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/RateCardService/GetAllRateCards.cs b/examples/Dfp/CSharp/v201702/RateCardService/GetAllRateCards.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/RateCardService/GetAllRateCards.cs rename to examples/Dfp/CSharp/v201702/RateCardService/GetAllRateCards.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/RateCardService/GetMarketplaceRateCards.cs b/examples/Dfp/CSharp/v201702/RateCardService/GetMarketplaceRateCards.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/RateCardService/GetMarketplaceRateCards.cs rename to examples/Dfp/CSharp/v201702/RateCardService/GetMarketplaceRateCards.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs b/examples/Dfp/CSharp/v201702/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201702/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs b/examples/Dfp/CSharp/v201702/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201702/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs b/examples/Dfp/CSharp/v201702/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201702/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReconciliationReportService/GetAllReconciliationReports.cs b/examples/Dfp/CSharp/v201702/ReconciliationReportService/GetAllReconciliationReports.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReconciliationReportService/GetAllReconciliationReports.cs rename to examples/Dfp/CSharp/v201702/ReconciliationReportService/GetAllReconciliationReports.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs b/examples/Dfp/CSharp/v201702/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs rename to examples/Dfp/CSharp/v201702/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReportService/RunDeliveryReport.cs b/examples/Dfp/CSharp/v201702/ReportService/RunDeliveryReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReportService/RunDeliveryReport.cs rename to examples/Dfp/CSharp/v201702/ReportService/RunDeliveryReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReportService/RunInventoryReport.cs b/examples/Dfp/CSharp/v201702/ReportService/RunInventoryReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReportService/RunInventoryReport.cs rename to examples/Dfp/CSharp/v201702/ReportService/RunInventoryReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReportService/RunReachReport.cs b/examples/Dfp/CSharp/v201702/ReportService/RunReachReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReportService/RunReachReport.cs rename to examples/Dfp/CSharp/v201702/ReportService/RunReachReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReportService/RunReportWithCustomFields.cs b/examples/Dfp/CSharp/v201702/ReportService/RunReportWithCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReportService/RunReportWithCustomFields.cs rename to examples/Dfp/CSharp/v201702/ReportService/RunReportWithCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReportService/RunSalesReport.cs b/examples/Dfp/CSharp/v201702/ReportService/RunSalesReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReportService/RunSalesReport.cs rename to examples/Dfp/CSharp/v201702/ReportService/RunSalesReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/ReportService/RunSavedQuery.cs b/examples/Dfp/CSharp/v201702/ReportService/RunSavedQuery.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/ReportService/RunSavedQuery.cs rename to examples/Dfp/CSharp/v201702/ReportService/RunSavedQuery.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201702/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201702/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201702/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/TeamService/CreateTeams.cs b/examples/Dfp/CSharp/v201702/TeamService/CreateTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/TeamService/CreateTeams.cs rename to examples/Dfp/CSharp/v201702/TeamService/CreateTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/TeamService/GetAllTeams.cs b/examples/Dfp/CSharp/v201702/TeamService/GetAllTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/TeamService/GetAllTeams.cs rename to examples/Dfp/CSharp/v201702/TeamService/GetAllTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/TeamService/UpdateTeams.cs b/examples/Dfp/CSharp/v201702/TeamService/UpdateTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/TeamService/UpdateTeams.cs rename to examples/Dfp/CSharp/v201702/TeamService/UpdateTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserService/CreateUsers.cs b/examples/Dfp/CSharp/v201702/UserService/CreateUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserService/CreateUsers.cs rename to examples/Dfp/CSharp/v201702/UserService/CreateUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserService/DeactivateUser.cs b/examples/Dfp/CSharp/v201702/UserService/DeactivateUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserService/DeactivateUser.cs rename to examples/Dfp/CSharp/v201702/UserService/DeactivateUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserService/GetAllRoles.cs b/examples/Dfp/CSharp/v201702/UserService/GetAllRoles.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserService/GetAllRoles.cs rename to examples/Dfp/CSharp/v201702/UserService/GetAllRoles.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserService/GetAllUsers.cs b/examples/Dfp/CSharp/v201702/UserService/GetAllUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserService/GetAllUsers.cs rename to examples/Dfp/CSharp/v201702/UserService/GetAllUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserService/GetCurrentUser.cs b/examples/Dfp/CSharp/v201702/UserService/GetCurrentUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserService/GetCurrentUser.cs rename to examples/Dfp/CSharp/v201702/UserService/GetCurrentUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserService/GetUserByEmailAddress.cs b/examples/Dfp/CSharp/v201702/UserService/GetUserByEmailAddress.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserService/GetUserByEmailAddress.cs rename to examples/Dfp/CSharp/v201702/UserService/GetUserByEmailAddress.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserService/UpdateUsers.cs b/examples/Dfp/CSharp/v201702/UserService/UpdateUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserService/UpdateUsers.cs rename to examples/Dfp/CSharp/v201702/UserService/UpdateUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/CreateUserTeamAssociations.cs b/examples/Dfp/CSharp/v201702/UserTeamAssociationService/CreateUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/CreateUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201702/UserTeamAssociationService/CreateUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/DeleteUserTeamAssociations.cs b/examples/Dfp/CSharp/v201702/UserTeamAssociationService/DeleteUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/DeleteUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201702/UserTeamAssociationService/DeleteUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/GetAllUserTeamAssociations.cs b/examples/Dfp/CSharp/v201702/UserTeamAssociationService/GetAllUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/GetAllUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201702/UserTeamAssociationService/GetAllUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs b/examples/Dfp/CSharp/v201702/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs rename to examples/Dfp/CSharp/v201702/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/UpdateUserTeamAssociations.cs b/examples/Dfp/CSharp/v201702/UserTeamAssociationService/UpdateUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/UserTeamAssociationService/UpdateUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201702/UserTeamAssociationService/UpdateUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs b/examples/Dfp/CSharp/v201702/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs rename to examples/Dfp/CSharp/v201702/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowApprovalRequests.cs b/examples/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowApprovalRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowApprovalRequests.cs rename to examples/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowApprovalRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs b/examples/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs rename to examples/Dfp/CSharp/v201702/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201702/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs b/examples/Dfp/CSharp/v201702/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201702/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs rename to examples/Dfp/CSharp/v201702/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ActivityGroupService/CreateActivityGroups.cs b/examples/Dfp/CSharp/v201705/ActivityGroupService/CreateActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ActivityGroupService/CreateActivityGroups.cs rename to examples/Dfp/CSharp/v201705/ActivityGroupService/CreateActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ActivityGroupService/GetActiveActivityGroups.cs b/examples/Dfp/CSharp/v201705/ActivityGroupService/GetActiveActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ActivityGroupService/GetActiveActivityGroups.cs rename to examples/Dfp/CSharp/v201705/ActivityGroupService/GetActiveActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ActivityGroupService/GetAllActivityGroups.cs b/examples/Dfp/CSharp/v201705/ActivityGroupService/GetAllActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ActivityGroupService/GetAllActivityGroups.cs rename to examples/Dfp/CSharp/v201705/ActivityGroupService/GetAllActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ActivityGroupService/UpdateActivityGroups.cs b/examples/Dfp/CSharp/v201705/ActivityGroupService/UpdateActivityGroups.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ActivityGroupService/UpdateActivityGroups.cs rename to examples/Dfp/CSharp/v201705/ActivityGroupService/UpdateActivityGroups.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ActivityService/CreateActivities.cs b/examples/Dfp/CSharp/v201705/ActivityService/CreateActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ActivityService/CreateActivities.cs rename to examples/Dfp/CSharp/v201705/ActivityService/CreateActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ActivityService/GetActiveActivities.cs b/examples/Dfp/CSharp/v201705/ActivityService/GetActiveActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ActivityService/GetActiveActivities.cs rename to examples/Dfp/CSharp/v201705/ActivityService/GetActiveActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ActivityService/GetAllActivities.cs b/examples/Dfp/CSharp/v201705/ActivityService/GetAllActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ActivityService/GetAllActivities.cs rename to examples/Dfp/CSharp/v201705/ActivityService/GetAllActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ActivityService/UpdateActivities.cs b/examples/Dfp/CSharp/v201705/ActivityService/UpdateActivities.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ActivityService/UpdateActivities.cs rename to examples/Dfp/CSharp/v201705/ActivityService/UpdateActivities.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/CreateAudienceSegments.cs b/examples/Dfp/CSharp/v201705/AudienceSegmentService/CreateAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/CreateAudienceSegments.cs rename to examples/Dfp/CSharp/v201705/AudienceSegmentService/CreateAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/GetAllAudienceSegments.cs b/examples/Dfp/CSharp/v201705/AudienceSegmentService/GetAllAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/GetAllAudienceSegments.cs rename to examples/Dfp/CSharp/v201705/AudienceSegmentService/GetAllAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/GetFirstPartyAudienceSegments.cs b/examples/Dfp/CSharp/v201705/AudienceSegmentService/GetFirstPartyAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/GetFirstPartyAudienceSegments.cs rename to examples/Dfp/CSharp/v201705/AudienceSegmentService/GetFirstPartyAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs b/examples/Dfp/CSharp/v201705/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs rename to examples/Dfp/CSharp/v201705/AudienceSegmentService/PopulateFirstPartyAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/UpdateAudienceSegments.cs b/examples/Dfp/CSharp/v201705/AudienceSegmentService/UpdateAudienceSegments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/AudienceSegmentService/UpdateAudienceSegments.cs rename to examples/Dfp/CSharp/v201705/AudienceSegmentService/UpdateAudienceSegments.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/BaseRateService/CreateProductBaseRates.cs b/examples/Dfp/CSharp/v201705/BaseRateService/CreateProductBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/BaseRateService/CreateProductBaseRates.cs rename to examples/Dfp/CSharp/v201705/BaseRateService/CreateProductBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/BaseRateService/CreateProductTemplateBaseRates.cs b/examples/Dfp/CSharp/v201705/BaseRateService/CreateProductTemplateBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/BaseRateService/CreateProductTemplateBaseRates.cs rename to examples/Dfp/CSharp/v201705/BaseRateService/CreateProductTemplateBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/BaseRateService/GetAllBaseRates.cs b/examples/Dfp/CSharp/v201705/BaseRateService/GetAllBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/BaseRateService/GetAllBaseRates.cs rename to examples/Dfp/CSharp/v201705/BaseRateService/GetAllBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/BaseRateService/GetBaseRatesForRateCard.cs b/examples/Dfp/CSharp/v201705/BaseRateService/GetBaseRatesForRateCard.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/BaseRateService/GetBaseRatesForRateCard.cs rename to examples/Dfp/CSharp/v201705/BaseRateService/GetBaseRatesForRateCard.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/BaseRateService/UpdateBaseRates.cs b/examples/Dfp/CSharp/v201705/BaseRateService/UpdateBaseRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/BaseRateService/UpdateBaseRates.cs rename to examples/Dfp/CSharp/v201705/BaseRateService/UpdateBaseRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CompanyService/CreateCompanies.cs b/examples/Dfp/CSharp/v201705/CompanyService/CreateCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CompanyService/CreateCompanies.cs rename to examples/Dfp/CSharp/v201705/CompanyService/CreateCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CompanyService/GetAdvertisers.cs b/examples/Dfp/CSharp/v201705/CompanyService/GetAdvertisers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CompanyService/GetAdvertisers.cs rename to examples/Dfp/CSharp/v201705/CompanyService/GetAdvertisers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CompanyService/GetAllCompanies.cs b/examples/Dfp/CSharp/v201705/CompanyService/GetAllCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CompanyService/GetAllCompanies.cs rename to examples/Dfp/CSharp/v201705/CompanyService/GetAllCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CompanyService/UpdateCompanies.cs b/examples/Dfp/CSharp/v201705/CompanyService/UpdateCompanies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CompanyService/UpdateCompanies.cs rename to examples/Dfp/CSharp/v201705/CompanyService/UpdateCompanies.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContactService/CreateContacts.cs b/examples/Dfp/CSharp/v201705/ContactService/CreateContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContactService/CreateContacts.cs rename to examples/Dfp/CSharp/v201705/ContactService/CreateContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContactService/GetAllContacts.cs b/examples/Dfp/CSharp/v201705/ContactService/GetAllContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContactService/GetAllContacts.cs rename to examples/Dfp/CSharp/v201705/ContactService/GetAllContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContactService/GetUninvitedContacts.cs b/examples/Dfp/CSharp/v201705/ContactService/GetUninvitedContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContactService/GetUninvitedContacts.cs rename to examples/Dfp/CSharp/v201705/ContactService/GetUninvitedContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContactService/UpdateContacts.cs b/examples/Dfp/CSharp/v201705/ContactService/UpdateContacts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContactService/UpdateContacts.cs rename to examples/Dfp/CSharp/v201705/ContactService/UpdateContacts.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/CreateContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/DeleteContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/GetAllContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs b/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs rename to examples/Dfp/CSharp/v201705/ContentMetadataKeyHierarchyService/UpdateContentMetadataKeyHierarchies.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ContentService/GetAllContent.cs b/examples/Dfp/CSharp/v201705/ContentService/GetAllContent.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ContentService/GetAllContent.cs rename to examples/Dfp/CSharp/v201705/ContentService/GetAllContent.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeService/CopyImageCreatives.cs b/examples/Dfp/CSharp/v201705/CreativeService/CopyImageCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeService/CopyImageCreatives.cs rename to examples/Dfp/CSharp/v201705/CreativeService/CopyImageCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeService/CreateCreativeFromTemplate.cs b/examples/Dfp/CSharp/v201705/CreativeService/CreateCreativeFromTemplate.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeService/CreateCreativeFromTemplate.cs rename to examples/Dfp/CSharp/v201705/CreativeService/CreateCreativeFromTemplate.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeService/CreateCreatives.cs b/examples/Dfp/CSharp/v201705/CreativeService/CreateCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeService/CreateCreatives.cs rename to examples/Dfp/CSharp/v201705/CreativeService/CreateCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeService/CreateCustomCreative.cs b/examples/Dfp/CSharp/v201705/CreativeService/CreateCustomCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeService/CreateCustomCreative.cs rename to examples/Dfp/CSharp/v201705/CreativeService/CreateCustomCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeService/CreateNativeCreative.cs b/examples/Dfp/CSharp/v201705/CreativeService/CreateNativeCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeService/CreateNativeCreative.cs rename to examples/Dfp/CSharp/v201705/CreativeService/CreateNativeCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeService/GetAllCreatives.cs b/examples/Dfp/CSharp/v201705/CreativeService/GetAllCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeService/GetAllCreatives.cs rename to examples/Dfp/CSharp/v201705/CreativeService/GetAllCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeService/GetImageCreatives.cs b/examples/Dfp/CSharp/v201705/CreativeService/GetImageCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeService/GetImageCreatives.cs rename to examples/Dfp/CSharp/v201705/CreativeService/GetImageCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeService/UpdateCreatives.cs b/examples/Dfp/CSharp/v201705/CreativeService/UpdateCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeService/UpdateCreatives.cs rename to examples/Dfp/CSharp/v201705/CreativeService/UpdateCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeSetService/GetAllCreativeSets.cs b/examples/Dfp/CSharp/v201705/CreativeSetService/GetAllCreativeSets.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeSetService/GetAllCreativeSets.cs rename to examples/Dfp/CSharp/v201705/CreativeSetService/GetAllCreativeSets.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeSetService/GetCreativeSetsForMasterCreative.cs b/examples/Dfp/CSharp/v201705/CreativeSetService/GetCreativeSetsForMasterCreative.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeSetService/GetCreativeSetsForMasterCreative.cs rename to examples/Dfp/CSharp/v201705/CreativeSetService/GetCreativeSetsForMasterCreative.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeTemplateService/GetAllCreativeTemplates.cs b/examples/Dfp/CSharp/v201705/CreativeTemplateService/GetAllCreativeTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeTemplateService/GetAllCreativeTemplates.cs rename to examples/Dfp/CSharp/v201705/CreativeTemplateService/GetAllCreativeTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs b/examples/Dfp/CSharp/v201705/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs rename to examples/Dfp/CSharp/v201705/CreativeTemplateService/GetSystemDefinedCreativeTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/CreateCreativeWrappers.cs b/examples/Dfp/CSharp/v201705/CreativeWrapperService/CreateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/CreateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201705/CreativeWrapperService/CreateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/DeactivateCreativeWrappers.cs b/examples/Dfp/CSharp/v201705/CreativeWrapperService/DeactivateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/DeactivateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201705/CreativeWrapperService/DeactivateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/GetActiveCreativeWrappers.cs b/examples/Dfp/CSharp/v201705/CreativeWrapperService/GetActiveCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/GetActiveCreativeWrappers.cs rename to examples/Dfp/CSharp/v201705/CreativeWrapperService/GetActiveCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/GetAllCreativeWrappers.cs b/examples/Dfp/CSharp/v201705/CreativeWrapperService/GetAllCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/GetAllCreativeWrappers.cs rename to examples/Dfp/CSharp/v201705/CreativeWrapperService/GetAllCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/UpdateCreativeWrappers.cs b/examples/Dfp/CSharp/v201705/CreativeWrapperService/UpdateCreativeWrappers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CreativeWrapperService/UpdateCreativeWrappers.cs rename to examples/Dfp/CSharp/v201705/CreativeWrapperService/UpdateCreativeWrappers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFieldOptions.cs b/examples/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFieldOptions.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFieldOptions.cs rename to examples/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFieldOptions.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFields.cs b/examples/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFields.cs rename to examples/Dfp/CSharp/v201705/CustomFieldService/CreateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomFieldService/DeactivateCustomFields.cs b/examples/Dfp/CSharp/v201705/CustomFieldService/DeactivateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomFieldService/DeactivateCustomFields.cs rename to examples/Dfp/CSharp/v201705/CustomFieldService/DeactivateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomFieldService/GetAllCustomFields.cs b/examples/Dfp/CSharp/v201705/CustomFieldService/GetAllCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomFieldService/GetAllCustomFields.cs rename to examples/Dfp/CSharp/v201705/CustomFieldService/GetAllCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomFieldService/GetCustomFieldsForLineItems.cs b/examples/Dfp/CSharp/v201705/CustomFieldService/GetCustomFieldsForLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomFieldService/GetCustomFieldsForLineItems.cs rename to examples/Dfp/CSharp/v201705/CustomFieldService/GetCustomFieldsForLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomFieldService/SetLineItemCustomFieldValue.cs b/examples/Dfp/CSharp/v201705/CustomFieldService/SetLineItemCustomFieldValue.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomFieldService/SetLineItemCustomFieldValue.cs rename to examples/Dfp/CSharp/v201705/CustomFieldService/SetLineItemCustomFieldValue.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomFieldService/UpdateCustomFields.cs b/examples/Dfp/CSharp/v201705/CustomFieldService/UpdateCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomFieldService/UpdateCustomFields.cs rename to examples/Dfp/CSharp/v201705/CustomFieldService/UpdateCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201705/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201705/CustomTargetingService/CreateCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201705/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201705/CustomTargetingService/GetAllCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs b/examples/Dfp/CSharp/v201705/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs rename to examples/Dfp/CSharp/v201705/CustomTargetingService/GetPredefinedCustomTargetingKeysAndValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingKeys.cs b/examples/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingKeys.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingKeys.cs rename to examples/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingKeys.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingValues.cs b/examples/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingValues.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingValues.cs rename to examples/Dfp/CSharp/v201705/CustomTargetingService/UpdateCustomTargetingValues.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ExchangeRateService/CreateExchangeRates.cs b/examples/Dfp/CSharp/v201705/ExchangeRateService/CreateExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ExchangeRateService/CreateExchangeRates.cs rename to examples/Dfp/CSharp/v201705/ExchangeRateService/CreateExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ExchangeRateService/GetAllExchangeRates.cs b/examples/Dfp/CSharp/v201705/ExchangeRateService/GetAllExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ExchangeRateService/GetAllExchangeRates.cs rename to examples/Dfp/CSharp/v201705/ExchangeRateService/GetAllExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs b/examples/Dfp/CSharp/v201705/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs rename to examples/Dfp/CSharp/v201705/ExchangeRateService/GetExchangeRatesForCurrencyCode.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ExchangeRateService/UpdateExchangeRates.cs b/examples/Dfp/CSharp/v201705/ExchangeRateService/UpdateExchangeRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ExchangeRateService/UpdateExchangeRates.cs rename to examples/Dfp/CSharp/v201705/ExchangeRateService/UpdateExchangeRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecast.cs b/examples/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecast.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecast.cs rename to examples/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecast.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecastById.cs b/examples/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecastById.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecastById.cs rename to examples/Dfp/CSharp/v201705/ForecastService/GetAvailabilityForecastById.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ForecastService/GetDeliveryForecastByIds.cs b/examples/Dfp/CSharp/v201705/ForecastService/GetDeliveryForecastByIds.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ForecastService/GetDeliveryForecastByIds.cs rename to examples/Dfp/CSharp/v201705/ForecastService/GetDeliveryForecastByIds.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/InventoryService/CreateAdUnits.cs b/examples/Dfp/CSharp/v201705/InventoryService/CreateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/InventoryService/CreateAdUnits.cs rename to examples/Dfp/CSharp/v201705/InventoryService/CreateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/InventoryService/CreateVideoAdUnit.cs b/examples/Dfp/CSharp/v201705/InventoryService/CreateVideoAdUnit.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/InventoryService/CreateVideoAdUnit.cs rename to examples/Dfp/CSharp/v201705/InventoryService/CreateVideoAdUnit.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/InventoryService/DeActivateAdUnits.cs b/examples/Dfp/CSharp/v201705/InventoryService/DeActivateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/InventoryService/DeActivateAdUnits.cs rename to examples/Dfp/CSharp/v201705/InventoryService/DeActivateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/InventoryService/GetAdUnitsByStatement.cs b/examples/Dfp/CSharp/v201705/InventoryService/GetAdUnitsByStatement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/InventoryService/GetAdUnitsByStatement.cs rename to examples/Dfp/CSharp/v201705/InventoryService/GetAdUnitsByStatement.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/InventoryService/GetAllAdUnitSizes.cs b/examples/Dfp/CSharp/v201705/InventoryService/GetAllAdUnitSizes.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/InventoryService/GetAllAdUnitSizes.cs rename to examples/Dfp/CSharp/v201705/InventoryService/GetAllAdUnitSizes.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/InventoryService/GetAllAdUnits.cs b/examples/Dfp/CSharp/v201705/InventoryService/GetAllAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/InventoryService/GetAllAdUnits.cs rename to examples/Dfp/CSharp/v201705/InventoryService/GetAllAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/InventoryService/GetInventoryTree.cs b/examples/Dfp/CSharp/v201705/InventoryService/GetInventoryTree.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/InventoryService/GetInventoryTree.cs rename to examples/Dfp/CSharp/v201705/InventoryService/GetInventoryTree.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/InventoryService/UpdateAdUnits.cs b/examples/Dfp/CSharp/v201705/InventoryService/UpdateAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/InventoryService/UpdateAdUnits.cs rename to examples/Dfp/CSharp/v201705/InventoryService/UpdateAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LabelService/CreateLabels.cs b/examples/Dfp/CSharp/v201705/LabelService/CreateLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LabelService/CreateLabels.cs rename to examples/Dfp/CSharp/v201705/LabelService/CreateLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LabelService/DeactivateActiveLabels.cs b/examples/Dfp/CSharp/v201705/LabelService/DeactivateActiveLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LabelService/DeactivateActiveLabels.cs rename to examples/Dfp/CSharp/v201705/LabelService/DeactivateActiveLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LabelService/GetActiveLabels.cs b/examples/Dfp/CSharp/v201705/LabelService/GetActiveLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LabelService/GetActiveLabels.cs rename to examples/Dfp/CSharp/v201705/LabelService/GetActiveLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LabelService/GetAllLabels.cs b/examples/Dfp/CSharp/v201705/LabelService/GetAllLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LabelService/GetAllLabels.cs rename to examples/Dfp/CSharp/v201705/LabelService/GetAllLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LabelService/UpdateLabels.cs b/examples/Dfp/CSharp/v201705/LabelService/UpdateLabels.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LabelService/UpdateLabels.cs rename to examples/Dfp/CSharp/v201705/LabelService/UpdateLabels.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/ActivateLicas.cs b/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/ActivateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/ActivateLicas.cs rename to examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/ActivateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/CreateLicas.cs b/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/CreateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/CreateLicas.cs rename to examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/CreateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/DeactivateLicas.cs b/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/DeactivateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/DeactivateLicas.cs rename to examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/DeactivateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetAllLicas.cs b/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetAllLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetAllLicas.cs rename to examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetAllLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetLicasForLineItem.cs b/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetLicasForLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetLicasForLineItem.cs rename to examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/GetLicasForLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/UpdateLicas.cs b/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/UpdateLicas.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/UpdateLicas.cs rename to examples/Dfp/CSharp/v201705/LineItemCreativeAssociationService/UpdateLicas.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemService/ActivateLineItem.cs b/examples/Dfp/CSharp/v201705/LineItemService/ActivateLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemService/ActivateLineItem.cs rename to examples/Dfp/CSharp/v201705/LineItemService/ActivateLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemService/CreateLineItems.cs b/examples/Dfp/CSharp/v201705/LineItemService/CreateLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemService/CreateLineItems.cs rename to examples/Dfp/CSharp/v201705/LineItemService/CreateLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemService/CreateVideoLineItem.cs b/examples/Dfp/CSharp/v201705/LineItemService/CreateVideoLineItem.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemService/CreateVideoLineItem.cs rename to examples/Dfp/CSharp/v201705/LineItemService/CreateVideoLineItem.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemService/GetAllLineItems.cs b/examples/Dfp/CSharp/v201705/LineItemService/GetAllLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemService/GetAllLineItems.cs rename to examples/Dfp/CSharp/v201705/LineItemService/GetAllLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemService/GetLineItemsThatNeedCreatives.cs b/examples/Dfp/CSharp/v201705/LineItemService/GetLineItemsThatNeedCreatives.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemService/GetLineItemsThatNeedCreatives.cs rename to examples/Dfp/CSharp/v201705/LineItemService/GetLineItemsThatNeedCreatives.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemService/GetRecentlyUpdatedLineItems.cs b/examples/Dfp/CSharp/v201705/LineItemService/GetRecentlyUpdatedLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemService/GetRecentlyUpdatedLineItems.cs rename to examples/Dfp/CSharp/v201705/LineItemService/GetRecentlyUpdatedLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemService/TargetCustomCriteria.cs b/examples/Dfp/CSharp/v201705/LineItemService/TargetCustomCriteria.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemService/TargetCustomCriteria.cs rename to examples/Dfp/CSharp/v201705/LineItemService/TargetCustomCriteria.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/LineItemService/UpdateLineItems.cs b/examples/Dfp/CSharp/v201705/LineItemService/UpdateLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/LineItemService/UpdateLineItems.cs rename to examples/Dfp/CSharp/v201705/LineItemService/UpdateLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/NativeStyleService/CreateNativeStyles.cs b/examples/Dfp/CSharp/v201705/NativeStyleService/CreateNativeStyles.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/NativeStyleService/CreateNativeStyles.cs rename to examples/Dfp/CSharp/v201705/NativeStyleService/CreateNativeStyles.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/NativeStyleService/GetAllNativeStyles.cs b/examples/Dfp/CSharp/v201705/NativeStyleService/GetAllNativeStyles.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/NativeStyleService/GetAllNativeStyles.cs rename to examples/Dfp/CSharp/v201705/NativeStyleService/GetAllNativeStyles.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/NetworkService/GetAllNetworks.cs b/examples/Dfp/CSharp/v201705/NetworkService/GetAllNetworks.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/NetworkService/GetAllNetworks.cs rename to examples/Dfp/CSharp/v201705/NetworkService/GetAllNetworks.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/NetworkService/GetCurrentNetwork.cs b/examples/Dfp/CSharp/v201705/NetworkService/GetCurrentNetwork.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/NetworkService/GetCurrentNetwork.cs rename to examples/Dfp/CSharp/v201705/NetworkService/GetCurrentNetwork.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/NetworkService/MakeTestNetwork.cs b/examples/Dfp/CSharp/v201705/NetworkService/MakeTestNetwork.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/NetworkService/MakeTestNetwork.cs rename to examples/Dfp/CSharp/v201705/NetworkService/MakeTestNetwork.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/OrderService/ApproveOrder.cs b/examples/Dfp/CSharp/v201705/OrderService/ApproveOrder.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/OrderService/ApproveOrder.cs rename to examples/Dfp/CSharp/v201705/OrderService/ApproveOrder.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/OrderService/CreateOrders.cs b/examples/Dfp/CSharp/v201705/OrderService/CreateOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/OrderService/CreateOrders.cs rename to examples/Dfp/CSharp/v201705/OrderService/CreateOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/OrderService/GetAllOrders.cs b/examples/Dfp/CSharp/v201705/OrderService/GetAllOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/OrderService/GetAllOrders.cs rename to examples/Dfp/CSharp/v201705/OrderService/GetAllOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/OrderService/GetOrdersStartingSoon.cs b/examples/Dfp/CSharp/v201705/OrderService/GetOrdersStartingSoon.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/OrderService/GetOrdersStartingSoon.cs rename to examples/Dfp/CSharp/v201705/OrderService/GetOrdersStartingSoon.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/OrderService/UpdateOrders.cs b/examples/Dfp/CSharp/v201705/OrderService/UpdateOrders.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/OrderService/UpdateOrders.cs rename to examples/Dfp/CSharp/v201705/OrderService/UpdateOrders.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PackageService/CreatePackages.cs b/examples/Dfp/CSharp/v201705/PackageService/CreatePackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PackageService/CreatePackages.cs rename to examples/Dfp/CSharp/v201705/PackageService/CreatePackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PackageService/CreateProposalLineItemsFromPackage.cs b/examples/Dfp/CSharp/v201705/PackageService/CreateProposalLineItemsFromPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PackageService/CreateProposalLineItemsFromPackage.cs rename to examples/Dfp/CSharp/v201705/PackageService/CreateProposalLineItemsFromPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PackageService/GetAllPackages.cs b/examples/Dfp/CSharp/v201705/PackageService/GetAllPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PackageService/GetAllPackages.cs rename to examples/Dfp/CSharp/v201705/PackageService/GetAllPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PackageService/GetInProgressPackages.cs b/examples/Dfp/CSharp/v201705/PackageService/GetInProgressPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PackageService/GetInProgressPackages.cs rename to examples/Dfp/CSharp/v201705/PackageService/GetInProgressPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PackageService/UpdatePackages.cs b/examples/Dfp/CSharp/v201705/PackageService/UpdatePackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PackageService/UpdatePackages.cs rename to examples/Dfp/CSharp/v201705/PackageService/UpdatePackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PlacementService/CreatePlacements.cs b/examples/Dfp/CSharp/v201705/PlacementService/CreatePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PlacementService/CreatePlacements.cs rename to examples/Dfp/CSharp/v201705/PlacementService/CreatePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PlacementService/DeactivatePlacement.cs b/examples/Dfp/CSharp/v201705/PlacementService/DeactivatePlacement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PlacementService/DeactivatePlacement.cs rename to examples/Dfp/CSharp/v201705/PlacementService/DeactivatePlacement.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PlacementService/GetActivePlacements.cs b/examples/Dfp/CSharp/v201705/PlacementService/GetActivePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PlacementService/GetActivePlacements.cs rename to examples/Dfp/CSharp/v201705/PlacementService/GetActivePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PlacementService/GetAllPlacements.cs b/examples/Dfp/CSharp/v201705/PlacementService/GetAllPlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PlacementService/GetAllPlacements.cs rename to examples/Dfp/CSharp/v201705/PlacementService/GetAllPlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PlacementService/UpdatePlacements.cs b/examples/Dfp/CSharp/v201705/PlacementService/UpdatePlacements.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PlacementService/UpdatePlacements.cs rename to examples/Dfp/CSharp/v201705/PlacementService/UpdatePlacements.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PremiumRateService/CreatePremiumRates.cs b/examples/Dfp/CSharp/v201705/PremiumRateService/CreatePremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PremiumRateService/CreatePremiumRates.cs rename to examples/Dfp/CSharp/v201705/PremiumRateService/CreatePremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PremiumRateService/GetAllPremiumRates.cs b/examples/Dfp/CSharp/v201705/PremiumRateService/GetAllPremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PremiumRateService/GetAllPremiumRates.cs rename to examples/Dfp/CSharp/v201705/PremiumRateService/GetAllPremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PremiumRateService/GetPremiumRatesForRateCard.cs b/examples/Dfp/CSharp/v201705/PremiumRateService/GetPremiumRatesForRateCard.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PremiumRateService/GetPremiumRatesForRateCard.cs rename to examples/Dfp/CSharp/v201705/PremiumRateService/GetPremiumRatesForRateCard.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PremiumRateService/UpdatePremiumRates.cs b/examples/Dfp/CSharp/v201705/PremiumRateService/UpdatePremiumRates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PremiumRateService/UpdatePremiumRates.cs rename to examples/Dfp/CSharp/v201705/PremiumRateService/UpdatePremiumRates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductPackageItemService/GetAllProductPackageItems.cs b/examples/Dfp/CSharp/v201705/ProductPackageItemService/GetAllProductPackageItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductPackageItemService/GetAllProductPackageItems.cs rename to examples/Dfp/CSharp/v201705/ProductPackageItemService/GetAllProductPackageItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs b/examples/Dfp/CSharp/v201705/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs rename to examples/Dfp/CSharp/v201705/ProductPackageItemService/GetProductPackageItemsForProductPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductPackageService/ActivateProductPackage.cs b/examples/Dfp/CSharp/v201705/ProductPackageService/ActivateProductPackage.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductPackageService/ActivateProductPackage.cs rename to examples/Dfp/CSharp/v201705/ProductPackageService/ActivateProductPackage.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductPackageService/CreateProductPackages.cs b/examples/Dfp/CSharp/v201705/ProductPackageService/CreateProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductPackageService/CreateProductPackages.cs rename to examples/Dfp/CSharp/v201705/ProductPackageService/CreateProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductPackageService/GetActiveProductPackages.cs b/examples/Dfp/CSharp/v201705/ProductPackageService/GetActiveProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductPackageService/GetActiveProductPackages.cs rename to examples/Dfp/CSharp/v201705/ProductPackageService/GetActiveProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductPackageService/GetAllProductPackages.cs b/examples/Dfp/CSharp/v201705/ProductPackageService/GetAllProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductPackageService/GetAllProductPackages.cs rename to examples/Dfp/CSharp/v201705/ProductPackageService/GetAllProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductPackageService/UpdateProductPackages.cs b/examples/Dfp/CSharp/v201705/ProductPackageService/UpdateProductPackages.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductPackageService/UpdateProductPackages.cs rename to examples/Dfp/CSharp/v201705/ProductPackageService/UpdateProductPackages.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201705/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201705/ProductService/CreateProgrammaticProductsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductService/GetAllProducts.cs b/examples/Dfp/CSharp/v201705/ProductService/GetAllProducts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductService/GetAllProducts.cs rename to examples/Dfp/CSharp/v201705/ProductService/GetAllProducts.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductService/GetProductsForProductTemplate.cs b/examples/Dfp/CSharp/v201705/ProductService/GetProductsForProductTemplate.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductService/GetProductsForProductTemplate.cs rename to examples/Dfp/CSharp/v201705/ProductService/GetProductsForProductTemplate.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductService/PublishProgrammaticProductsToMarketplace.cs b/examples/Dfp/CSharp/v201705/ProductService/PublishProgrammaticProductsToMarketplace.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductService/PublishProgrammaticProductsToMarketplace.cs rename to examples/Dfp/CSharp/v201705/ProductService/PublishProgrammaticProductsToMarketplace.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductService/UpdateProducts.cs b/examples/Dfp/CSharp/v201705/ProductService/UpdateProducts.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductService/UpdateProducts.cs rename to examples/Dfp/CSharp/v201705/ProductService/UpdateProducts.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/ActivateProductTemplates.cs b/examples/Dfp/CSharp/v201705/ProductTemplateService/ActivateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/ActivateProductTemplates.cs rename to examples/Dfp/CSharp/v201705/ProductTemplateService/ActivateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/CreateProductTemplates.cs b/examples/Dfp/CSharp/v201705/ProductTemplateService/CreateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/CreateProductTemplates.cs rename to examples/Dfp/CSharp/v201705/ProductTemplateService/CreateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/CreateProgrammaticProductTemplates.cs b/examples/Dfp/CSharp/v201705/ProductTemplateService/CreateProgrammaticProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/CreateProgrammaticProductTemplates.cs rename to examples/Dfp/CSharp/v201705/ProductTemplateService/CreateProgrammaticProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/GetAllProductTemplates.cs b/examples/Dfp/CSharp/v201705/ProductTemplateService/GetAllProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/GetAllProductTemplates.cs rename to examples/Dfp/CSharp/v201705/ProductTemplateService/GetAllProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/GetSponsorshipProductTemplates.cs b/examples/Dfp/CSharp/v201705/ProductTemplateService/GetSponsorshipProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/GetSponsorshipProductTemplates.cs rename to examples/Dfp/CSharp/v201705/ProductTemplateService/GetSponsorshipProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/UpdateProductTemplates.cs b/examples/Dfp/CSharp/v201705/ProductTemplateService/UpdateProductTemplates.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProductTemplateService/UpdateProductTemplates.cs rename to examples/Dfp/CSharp/v201705/ProductTemplateService/UpdateProductTemplates.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/ArchiveProposalLineItems.cs b/examples/Dfp/CSharp/v201705/ProposalLineItemService/ArchiveProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/ArchiveProposalLineItems.cs rename to examples/Dfp/CSharp/v201705/ProposalLineItemService/ArchiveProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs b/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs rename to examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProgrammaticProposalLineItemsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProposalLineItems.cs b/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProposalLineItems.cs rename to examples/Dfp/CSharp/v201705/ProposalLineItemService/CreateProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/GetAllProposalLineItems.cs b/examples/Dfp/CSharp/v201705/ProposalLineItemService/GetAllProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/GetAllProposalLineItems.cs rename to examples/Dfp/CSharp/v201705/ProposalLineItemService/GetAllProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/GetProposalLineItemsForProposal.cs b/examples/Dfp/CSharp/v201705/ProposalLineItemService/GetProposalLineItemsForProposal.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/GetProposalLineItemsForProposal.cs rename to examples/Dfp/CSharp/v201705/ProposalLineItemService/GetProposalLineItemsForProposal.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/UpdateProposalLineItems.cs b/examples/Dfp/CSharp/v201705/ProposalLineItemService/UpdateProposalLineItems.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalLineItemService/UpdateProposalLineItems.cs rename to examples/Dfp/CSharp/v201705/ProposalLineItemService/UpdateProposalLineItems.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposals.cs b/examples/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposals.cs rename to examples/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs b/examples/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs rename to examples/Dfp/CSharp/v201705/ProposalService/CreateProgrammaticProposalsForNonSalesManagement.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/CreateProposals.cs b/examples/Dfp/CSharp/v201705/ProposalService/CreateProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/CreateProposals.cs rename to examples/Dfp/CSharp/v201705/ProposalService/CreateProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/GetAllProposals.cs b/examples/Dfp/CSharp/v201705/ProposalService/GetAllProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/GetAllProposals.cs rename to examples/Dfp/CSharp/v201705/ProposalService/GetAllProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/GetMarketplaceComments.cs b/examples/Dfp/CSharp/v201705/ProposalService/GetMarketplaceComments.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/GetMarketplaceComments.cs rename to examples/Dfp/CSharp/v201705/ProposalService/GetMarketplaceComments.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/GetProposalsPendingApproval.cs b/examples/Dfp/CSharp/v201705/ProposalService/GetProposalsPendingApproval.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/GetProposalsPendingApproval.cs rename to examples/Dfp/CSharp/v201705/ProposalService/GetProposalsPendingApproval.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/RequestBuyerAcceptance.cs b/examples/Dfp/CSharp/v201705/ProposalService/RequestBuyerAcceptance.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/RequestBuyerAcceptance.cs rename to examples/Dfp/CSharp/v201705/ProposalService/RequestBuyerAcceptance.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/SubmitProposalsForApproval.cs b/examples/Dfp/CSharp/v201705/ProposalService/SubmitProposalsForApproval.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/SubmitProposalsForApproval.cs rename to examples/Dfp/CSharp/v201705/ProposalService/SubmitProposalsForApproval.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ProposalService/UpdateProposals.cs b/examples/Dfp/CSharp/v201705/ProposalService/UpdateProposals.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ProposalService/UpdateProposals.cs rename to examples/Dfp/CSharp/v201705/ProposalService/UpdateProposals.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/FetchMatchTables.cs b/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/FetchMatchTables.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/FetchMatchTables.cs rename to examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/FetchMatchTables.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs b/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs rename to examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllLineItemsUsingPql.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs b/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs rename to examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetAllProgrammaticBuyers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetGeoTargets.cs b/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetGeoTargets.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetGeoTargets.cs rename to examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetGeoTargets.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetLineItemsNamedLike.cs b/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetLineItemsNamedLike.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetLineItemsNamedLike.cs rename to examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetLineItemsNamedLike.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetRecentChanges.cs b/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetRecentChanges.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetRecentChanges.cs rename to examples/Dfp/CSharp/v201705/PublisherQueryLanguageService/GetRecentChanges.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/RateCardService/GetAllRateCards.cs b/examples/Dfp/CSharp/v201705/RateCardService/GetAllRateCards.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/RateCardService/GetAllRateCards.cs rename to examples/Dfp/CSharp/v201705/RateCardService/GetAllRateCards.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/RateCardService/GetMarketplaceRateCards.cs b/examples/Dfp/CSharp/v201705/RateCardService/GetMarketplaceRateCards.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/RateCardService/GetMarketplaceRateCards.cs rename to examples/Dfp/CSharp/v201705/RateCardService/GetMarketplaceRateCards.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs b/examples/Dfp/CSharp/v201705/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201705/ReconciliationLineItemReportService/GetReconciliationLineItemReportsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs b/examples/Dfp/CSharp/v201705/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201705/ReconciliationOrderReportService/GetReconciliationOrderReportsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs b/examples/Dfp/CSharp/v201705/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs rename to examples/Dfp/CSharp/v201705/ReconciliationReportRowService/GetReconciliationReportRowsForReconciliationReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReconciliationReportService/GetAllReconciliationReports.cs b/examples/Dfp/CSharp/v201705/ReconciliationReportService/GetAllReconciliationReports.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReconciliationReportService/GetAllReconciliationReports.cs rename to examples/Dfp/CSharp/v201705/ReconciliationReportService/GetAllReconciliationReports.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs b/examples/Dfp/CSharp/v201705/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs rename to examples/Dfp/CSharp/v201705/ReconciliationReportService/GetReconciliationReportForLastBillingPeriod.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReportService/RunDeliveryReport.cs b/examples/Dfp/CSharp/v201705/ReportService/RunDeliveryReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReportService/RunDeliveryReport.cs rename to examples/Dfp/CSharp/v201705/ReportService/RunDeliveryReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReportService/RunInventoryReport.cs b/examples/Dfp/CSharp/v201705/ReportService/RunInventoryReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReportService/RunInventoryReport.cs rename to examples/Dfp/CSharp/v201705/ReportService/RunInventoryReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReportService/RunReachReport.cs b/examples/Dfp/CSharp/v201705/ReportService/RunReachReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReportService/RunReachReport.cs rename to examples/Dfp/CSharp/v201705/ReportService/RunReachReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReportService/RunReportWithCustomFields.cs b/examples/Dfp/CSharp/v201705/ReportService/RunReportWithCustomFields.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReportService/RunReportWithCustomFields.cs rename to examples/Dfp/CSharp/v201705/ReportService/RunReportWithCustomFields.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReportService/RunSalesReport.cs b/examples/Dfp/CSharp/v201705/ReportService/RunSalesReport.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReportService/RunSalesReport.cs rename to examples/Dfp/CSharp/v201705/ReportService/RunSalesReport.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/ReportService/RunSavedQuery.cs b/examples/Dfp/CSharp/v201705/ReportService/RunSavedQuery.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/ReportService/RunSavedQuery.cs rename to examples/Dfp/CSharp/v201705/ReportService/RunSavedQuery.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201705/SuggestedAdUnitService/ApproveSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201705/SuggestedAdUnitService/GetAllSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs b/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs rename to examples/Dfp/CSharp/v201705/SuggestedAdUnitService/GetHighlyRequestedSuggestedAdUnits.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/TeamService/CreateTeams.cs b/examples/Dfp/CSharp/v201705/TeamService/CreateTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/TeamService/CreateTeams.cs rename to examples/Dfp/CSharp/v201705/TeamService/CreateTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/TeamService/GetAllTeams.cs b/examples/Dfp/CSharp/v201705/TeamService/GetAllTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/TeamService/GetAllTeams.cs rename to examples/Dfp/CSharp/v201705/TeamService/GetAllTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/TeamService/UpdateTeams.cs b/examples/Dfp/CSharp/v201705/TeamService/UpdateTeams.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/TeamService/UpdateTeams.cs rename to examples/Dfp/CSharp/v201705/TeamService/UpdateTeams.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserService/CreateUsers.cs b/examples/Dfp/CSharp/v201705/UserService/CreateUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserService/CreateUsers.cs rename to examples/Dfp/CSharp/v201705/UserService/CreateUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserService/DeactivateUser.cs b/examples/Dfp/CSharp/v201705/UserService/DeactivateUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserService/DeactivateUser.cs rename to examples/Dfp/CSharp/v201705/UserService/DeactivateUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserService/GetAllRoles.cs b/examples/Dfp/CSharp/v201705/UserService/GetAllRoles.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserService/GetAllRoles.cs rename to examples/Dfp/CSharp/v201705/UserService/GetAllRoles.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserService/GetAllUsers.cs b/examples/Dfp/CSharp/v201705/UserService/GetAllUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserService/GetAllUsers.cs rename to examples/Dfp/CSharp/v201705/UserService/GetAllUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserService/GetCurrentUser.cs b/examples/Dfp/CSharp/v201705/UserService/GetCurrentUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserService/GetCurrentUser.cs rename to examples/Dfp/CSharp/v201705/UserService/GetCurrentUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserService/GetUserByEmailAddress.cs b/examples/Dfp/CSharp/v201705/UserService/GetUserByEmailAddress.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserService/GetUserByEmailAddress.cs rename to examples/Dfp/CSharp/v201705/UserService/GetUserByEmailAddress.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserService/UpdateUsers.cs b/examples/Dfp/CSharp/v201705/UserService/UpdateUsers.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserService/UpdateUsers.cs rename to examples/Dfp/CSharp/v201705/UserService/UpdateUsers.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/CreateUserTeamAssociations.cs b/examples/Dfp/CSharp/v201705/UserTeamAssociationService/CreateUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/CreateUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201705/UserTeamAssociationService/CreateUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/DeleteUserTeamAssociations.cs b/examples/Dfp/CSharp/v201705/UserTeamAssociationService/DeleteUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/DeleteUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201705/UserTeamAssociationService/DeleteUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/GetAllUserTeamAssociations.cs b/examples/Dfp/CSharp/v201705/UserTeamAssociationService/GetAllUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/GetAllUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201705/UserTeamAssociationService/GetAllUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs b/examples/Dfp/CSharp/v201705/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs rename to examples/Dfp/CSharp/v201705/UserTeamAssociationService/GetUserTeamAssociationsForUser.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/UpdateUserTeamAssociations.cs b/examples/Dfp/CSharp/v201705/UserTeamAssociationService/UpdateUserTeamAssociations.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/UserTeamAssociationService/UpdateUserTeamAssociations.cs rename to examples/Dfp/CSharp/v201705/UserTeamAssociationService/UpdateUserTeamAssociations.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs b/examples/Dfp/CSharp/v201705/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs rename to examples/Dfp/CSharp/v201705/WorkflowRequestService/ApproveWorkflowApprovalRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowApprovalRequests.cs b/examples/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowApprovalRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowApprovalRequests.cs rename to examples/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowApprovalRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs b/examples/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs rename to examples/Dfp/CSharp/v201705/WorkflowRequestService/GetWorkflowExternalConditionRequests.cs diff --git a/dfp/examples/Dfp/CSharp/v201705/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs b/examples/Dfp/CSharp/v201705/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs similarity index 100% rename from dfp/examples/Dfp/CSharp/v201705/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs rename to examples/Dfp/CSharp/v201705/WorkflowRequestService/TriggerWorkflowExternalConditionRequests.cs diff --git a/adwords/lib/BouncyCastle/BouncyCastle.Crypto.dll b/lib/BouncyCastle/BouncyCastle.Crypto.dll similarity index 100% rename from adwords/lib/BouncyCastle/BouncyCastle.Crypto.dll rename to lib/BouncyCastle/BouncyCastle.Crypto.dll diff --git a/adwords/lib/BouncyCastle/license.txt b/lib/BouncyCastle/license.txt similarity index 100% rename from adwords/lib/BouncyCastle/license.txt rename to lib/BouncyCastle/license.txt diff --git a/adwords/lib/NUnit/license.txt b/lib/NUnit/license.txt similarity index 100% rename from adwords/lib/NUnit/license.txt rename to lib/NUnit/license.txt diff --git a/adwords/lib/NUnit/nunit.framework.dll b/lib/NUnit/nunit.framework.dll similarity index 100% rename from adwords/lib/NUnit/nunit.framework.dll rename to lib/NUnit/nunit.framework.dll diff --git a/adwords/src/AdWords/AdWords.csproj b/src/AdWords/AdWords.csproj similarity index 100% rename from adwords/src/AdWords/AdWords.csproj rename to src/AdWords/AdWords.csproj diff --git a/adwords/src/AdWords/AdWordsErrorMessages.Designer.cs b/src/AdWords/AdWordsErrorMessages.Designer.cs similarity index 100% rename from adwords/src/AdWords/AdWordsErrorMessages.Designer.cs rename to src/AdWords/AdWordsErrorMessages.Designer.cs diff --git a/adwords/src/AdWords/AdWordsErrorMessages.resx b/src/AdWords/AdWordsErrorMessages.resx similarity index 100% rename from adwords/src/AdWords/AdWordsErrorMessages.resx rename to src/AdWords/AdWordsErrorMessages.resx diff --git a/adwords/src/AdWords/App.config b/src/AdWords/App.config similarity index 100% rename from adwords/src/AdWords/App.config rename to src/AdWords/App.config diff --git a/adwords/src/AdWords/Headers/AdWordsSoapHeader.cs b/src/AdWords/Headers/AdWordsSoapHeader.cs similarity index 100% rename from adwords/src/AdWords/Headers/AdWordsSoapHeader.cs rename to src/AdWords/Headers/AdWordsSoapHeader.cs diff --git a/adwords/src/AdWords/Headers/RequestHeader.cs b/src/AdWords/Headers/RequestHeader.cs similarity index 100% rename from adwords/src/AdWords/Headers/RequestHeader.cs rename to src/AdWords/Headers/RequestHeader.cs diff --git a/adwords/src/AdWords/Headers/RequestHeaderStub.cs b/src/AdWords/Headers/RequestHeaderStub.cs similarity index 100% rename from adwords/src/AdWords/Headers/RequestHeaderStub.cs rename to src/AdWords/Headers/RequestHeaderStub.cs diff --git a/adwords/src/AdWords/Headers/ResponseHeader.cs b/src/AdWords/Headers/ResponseHeader.cs similarity index 100% rename from adwords/src/AdWords/Headers/ResponseHeader.cs rename to src/AdWords/Headers/ResponseHeader.cs diff --git a/adwords/src/AdWords/Headers/ResponseHeaderStub.cs b/src/AdWords/Headers/ResponseHeaderStub.cs similarity index 100% rename from adwords/src/AdWords/Headers/ResponseHeaderStub.cs rename to src/AdWords/Headers/ResponseHeaderStub.cs diff --git a/adwords/src/AdWords/Lib/AdWordsApiException.cs b/src/AdWords/Lib/AdWordsApiException.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsApiException.cs rename to src/AdWords/Lib/AdWordsApiException.cs diff --git a/adwords/src/AdWords/Lib/AdWordsAppConfig.cs b/src/AdWords/Lib/AdWordsAppConfig.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsAppConfig.cs rename to src/AdWords/Lib/AdWordsAppConfig.cs diff --git a/adwords/src/AdWords/Lib/AdWordsCallListener.cs b/src/AdWords/Lib/AdWordsCallListener.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsCallListener.cs rename to src/AdWords/Lib/AdWordsCallListener.cs diff --git a/adwords/src/AdWords/Lib/AdWordsException.cs b/src/AdWords/Lib/AdWordsException.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsException.cs rename to src/AdWords/Lib/AdWordsException.cs diff --git a/adwords/src/AdWords/Lib/AdWordsService.cs b/src/AdWords/Lib/AdWordsService.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsService.cs rename to src/AdWords/Lib/AdWordsService.cs diff --git a/adwords/src/AdWords/Lib/AdWordsServiceFactory.cs b/src/AdWords/Lib/AdWordsServiceFactory.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsServiceFactory.cs rename to src/AdWords/Lib/AdWordsServiceFactory.cs diff --git a/adwords/src/AdWords/Lib/AdWordsServiceSignature.cs b/src/AdWords/Lib/AdWordsServiceSignature.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsServiceSignature.cs rename to src/AdWords/Lib/AdWordsServiceSignature.cs diff --git a/adwords/src/AdWords/Lib/AdWordsSoapClient.cs b/src/AdWords/Lib/AdWordsSoapClient.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsSoapClient.cs rename to src/AdWords/Lib/AdWordsSoapClient.cs diff --git a/adwords/src/AdWords/Lib/AdWordsTraceListener.cs b/src/AdWords/Lib/AdWordsTraceListener.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsTraceListener.cs rename to src/AdWords/Lib/AdWordsTraceListener.cs diff --git a/adwords/src/AdWords/Lib/AdWordsUser.cs b/src/AdWords/Lib/AdWordsUser.cs similarity index 100% rename from adwords/src/AdWords/Lib/AdWordsUser.cs rename to src/AdWords/Lib/AdWordsUser.cs diff --git a/adwords/src/AdWords/Lib/ApiCallEntry.cs b/src/AdWords/Lib/ApiCallEntry.cs similarity index 100% rename from adwords/src/AdWords/Lib/ApiCallEntry.cs rename to src/AdWords/Lib/ApiCallEntry.cs diff --git a/adwords/src/AdWords/Properties/AssemblyInfo.cs b/src/AdWords/Properties/AssemblyInfo.cs similarity index 100% rename from adwords/src/AdWords/Properties/AssemblyInfo.cs rename to src/AdWords/Properties/AssemblyInfo.cs diff --git a/adwords/src/AdWords/Properties/Properties.cs b/src/AdWords/Properties/Properties.cs similarity index 100% rename from adwords/src/AdWords/Properties/Properties.cs rename to src/AdWords/Properties/Properties.cs diff --git a/adwords/src/AdWords/Util/BatchJob/AdWordsBulkRequestException.cs b/src/AdWords/Util/BatchJob/AdWordsBulkRequestException.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/AdWordsBulkRequestException.cs rename to src/AdWords/Util/BatchJob/AdWordsBulkRequestException.cs diff --git a/adwords/src/AdWords/Util/BatchJob/BatchJobUtilitiesBase.cs b/src/AdWords/Util/BatchJob/BatchJobUtilitiesBase.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/BatchJobUtilitiesBase.cs rename to src/AdWords/Util/BatchJob/BatchJobUtilitiesBase.cs diff --git a/adwords/src/AdWords/Util/BatchJob/BatchUploadProgress.cs b/src/AdWords/Util/BatchJob/BatchUploadProgress.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/BatchUploadProgress.cs rename to src/AdWords/Util/BatchJob/BatchUploadProgress.cs diff --git a/adwords/src/AdWords/Util/BatchJob/BulkJobErrorHandler.cs b/src/AdWords/Util/BatchJob/BulkJobErrorHandler.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/BulkJobErrorHandler.cs rename to src/AdWords/Util/BatchJob/BulkJobErrorHandler.cs diff --git a/adwords/src/AdWords/Util/BatchJob/CloudStorageError.cs b/src/AdWords/Util/BatchJob/CloudStorageError.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/CloudStorageError.cs rename to src/AdWords/Util/BatchJob/CloudStorageError.cs diff --git a/adwords/src/AdWords/Util/BatchJob/CloudStorageErrorDetail.cs b/src/AdWords/Util/BatchJob/CloudStorageErrorDetail.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/CloudStorageErrorDetail.cs rename to src/AdWords/Util/BatchJob/CloudStorageErrorDetail.cs diff --git a/adwords/src/AdWords/Util/BatchJob/CloudStorageErrorResponse.cs b/src/AdWords/Util/BatchJob/CloudStorageErrorResponse.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/CloudStorageErrorResponse.cs rename to src/AdWords/Util/BatchJob/CloudStorageErrorResponse.cs diff --git a/adwords/src/AdWords/Util/BatchJob/v201609/BatchJobUtilities.cs b/src/AdWords/Util/BatchJob/v201609/BatchJobUtilities.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/v201609/BatchJobUtilities.cs rename to src/AdWords/Util/BatchJob/v201609/BatchJobUtilities.cs diff --git a/adwords/src/AdWords/Util/BatchJob/v201702/BatchJobUtilities.cs b/src/AdWords/Util/BatchJob/v201702/BatchJobUtilities.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/v201702/BatchJobUtilities.cs rename to src/AdWords/Util/BatchJob/v201702/BatchJobUtilities.cs diff --git a/adwords/src/AdWords/Util/BatchJob/v201705/BatchJobUtilities.cs b/src/AdWords/Util/BatchJob/v201705/BatchJobUtilities.cs similarity index 100% rename from adwords/src/AdWords/Util/BatchJob/v201705/BatchJobUtilities.cs rename to src/AdWords/Util/BatchJob/v201705/BatchJobUtilities.cs diff --git a/adwords/src/AdWords/Util/Reports/AdWordsReportsException.cs b/src/AdWords/Util/Reports/AdWordsReportsException.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/AdWordsReportsException.cs rename to src/AdWords/Util/Reports/AdWordsReportsException.cs diff --git a/adwords/src/AdWords/Util/Reports/IReportDefinition.cs b/src/AdWords/Util/Reports/IReportDefinition.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/IReportDefinition.cs rename to src/AdWords/Util/Reports/IReportDefinition.cs diff --git a/adwords/src/AdWords/Util/Reports/IReportDefinitionField.cs b/src/AdWords/Util/Reports/IReportDefinitionField.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/IReportDefinitionField.cs rename to src/AdWords/Util/Reports/IReportDefinitionField.cs diff --git a/adwords/src/AdWords/Util/Reports/Parser/AwReport.cs b/src/AdWords/Util/Reports/Parser/AwReport.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/Parser/AwReport.cs rename to src/AdWords/Util/Reports/Parser/AwReport.cs diff --git a/adwords/src/AdWords/Util/Reports/Parser/AwXmlTextReader.cs b/src/AdWords/Util/Reports/Parser/AwXmlTextReader.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/Parser/AwXmlTextReader.cs rename to src/AdWords/Util/Reports/Parser/AwXmlTextReader.cs diff --git a/adwords/src/AdWords/Util/Reports/Parser/ColumnValuePair.cs b/src/AdWords/Util/Reports/Parser/ColumnValuePair.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/Parser/ColumnValuePair.cs rename to src/AdWords/Util/Reports/Parser/ColumnValuePair.cs diff --git a/adwords/src/AdWords/Util/Reports/Parser/InputTextReader.cs b/src/AdWords/Util/Reports/Parser/InputTextReader.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/Parser/InputTextReader.cs rename to src/AdWords/Util/Reports/Parser/InputTextReader.cs diff --git a/adwords/src/AdWords/Util/Reports/Parser/ReportColumn.cs b/src/AdWords/Util/Reports/Parser/ReportColumn.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/Parser/ReportColumn.cs rename to src/AdWords/Util/Reports/Parser/ReportColumn.cs diff --git a/adwords/src/AdWords/Util/Reports/Parser/ReportParserUtils.cs b/src/AdWords/Util/Reports/Parser/ReportParserUtils.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/Parser/ReportParserUtils.cs rename to src/AdWords/Util/Reports/Parser/ReportParserUtils.cs diff --git a/adwords/src/AdWords/Util/Reports/ReportDownloadError.cs b/src/AdWords/Util/Reports/ReportDownloadError.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/ReportDownloadError.cs rename to src/AdWords/Util/Reports/ReportDownloadError.cs diff --git a/adwords/src/AdWords/Util/Reports/ReportUtilities.cs b/src/AdWords/Util/Reports/ReportUtilities.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/ReportUtilities.cs rename to src/AdWords/Util/Reports/ReportUtilities.cs diff --git a/adwords/src/AdWords/Util/Reports/v201609/PredefinedReportTypes.cs b/src/AdWords/Util/Reports/v201609/PredefinedReportTypes.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/v201609/PredefinedReportTypes.cs rename to src/AdWords/Util/Reports/v201609/PredefinedReportTypes.cs diff --git a/adwords/src/AdWords/Util/Reports/v201702/PredefinedReportTypes.cs b/src/AdWords/Util/Reports/v201702/PredefinedReportTypes.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/v201702/PredefinedReportTypes.cs rename to src/AdWords/Util/Reports/v201702/PredefinedReportTypes.cs diff --git a/adwords/src/AdWords/Util/Reports/v201705/PredefinedReportTypes.cs b/src/AdWords/Util/Reports/v201705/PredefinedReportTypes.cs similarity index 100% rename from adwords/src/AdWords/Util/Reports/v201705/PredefinedReportTypes.cs rename to src/AdWords/Util/Reports/v201705/PredefinedReportTypes.cs diff --git a/adwords/src/AdWords/Util/Selectors/BaseFields.cs b/src/AdWords/Util/Selectors/BaseFields.cs similarity index 100% rename from adwords/src/AdWords/Util/Selectors/BaseFields.cs rename to src/AdWords/Util/Selectors/BaseFields.cs diff --git a/adwords/src/AdWords/Util/Selectors/Field.cs b/src/AdWords/Util/Selectors/Field.cs similarity index 100% rename from adwords/src/AdWords/Util/Selectors/Field.cs rename to src/AdWords/Util/Selectors/Field.cs diff --git a/adwords/src/AdWords/Util/Shopping/BiddableUnitState.cs b/src/AdWords/Util/Shopping/BiddableUnitState.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/BiddableUnitState.cs rename to src/AdWords/Util/Shopping/BiddableUnitState.cs diff --git a/adwords/src/AdWords/Util/Shopping/ExcludedUnitState.cs b/src/AdWords/Util/Shopping/ExcludedUnitState.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/ExcludedUnitState.cs rename to src/AdWords/Util/Shopping/ExcludedUnitState.cs diff --git a/adwords/src/AdWords/Util/Shopping/NodeDifference.cs b/src/AdWords/Util/Shopping/NodeDifference.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/NodeDifference.cs rename to src/AdWords/Util/Shopping/NodeDifference.cs diff --git a/adwords/src/AdWords/Util/Shopping/NodeState.cs b/src/AdWords/Util/Shopping/NodeState.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/NodeState.cs rename to src/AdWords/Util/Shopping/NodeState.cs diff --git a/adwords/src/AdWords/Util/Shopping/NodeType.cs b/src/AdWords/Util/Shopping/NodeType.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/NodeType.cs rename to src/AdWords/Util/Shopping/NodeType.cs diff --git a/adwords/src/AdWords/Util/Shopping/ShoppingMessages.Designer.cs b/src/AdWords/Util/Shopping/ShoppingMessages.Designer.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/ShoppingMessages.Designer.cs rename to src/AdWords/Util/Shopping/ShoppingMessages.Designer.cs diff --git a/adwords/src/AdWords/Util/Shopping/ShoppingMessages.resx b/src/AdWords/Util/Shopping/ShoppingMessages.resx similarity index 100% rename from adwords/src/AdWords/Util/Shopping/ShoppingMessages.resx rename to src/AdWords/Util/Shopping/ShoppingMessages.resx diff --git a/adwords/src/AdWords/Util/Shopping/SubdivisionState.cs b/src/AdWords/Util/Shopping/SubdivisionState.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/SubdivisionState.cs rename to src/AdWords/Util/Shopping/SubdivisionState.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201609/OperationPair.cs b/src/AdWords/Util/Shopping/v201609/OperationPair.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201609/OperationPair.cs rename to src/AdWords/Util/Shopping/v201609/OperationPair.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparer.cs b/src/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparer.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparer.cs rename to src/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparer.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201609/ProductDimensions.cs b/src/AdWords/Util/Shopping/v201609/ProductDimensions.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201609/ProductDimensions.cs rename to src/AdWords/Util/Shopping/v201609/ProductDimensions.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201609/ProductPartitionNode.cs b/src/AdWords/Util/Shopping/v201609/ProductPartitionNode.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201609/ProductPartitionNode.cs rename to src/AdWords/Util/Shopping/v201609/ProductPartitionNode.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201609/ProductPartitionNodeAdapter.cs b/src/AdWords/Util/Shopping/v201609/ProductPartitionNodeAdapter.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201609/ProductPartitionNodeAdapter.cs rename to src/AdWords/Util/Shopping/v201609/ProductPartitionNodeAdapter.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201609/ProductPartitionTree.cs b/src/AdWords/Util/Shopping/v201609/ProductPartitionTree.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201609/ProductPartitionTree.cs rename to src/AdWords/Util/Shopping/v201609/ProductPartitionTree.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201702/OperationPair.cs b/src/AdWords/Util/Shopping/v201702/OperationPair.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201702/OperationPair.cs rename to src/AdWords/Util/Shopping/v201702/OperationPair.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparer.cs b/src/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparer.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparer.cs rename to src/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparer.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201702/ProductDimensions.cs b/src/AdWords/Util/Shopping/v201702/ProductDimensions.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201702/ProductDimensions.cs rename to src/AdWords/Util/Shopping/v201702/ProductDimensions.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201702/ProductPartitionNode.cs b/src/AdWords/Util/Shopping/v201702/ProductPartitionNode.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201702/ProductPartitionNode.cs rename to src/AdWords/Util/Shopping/v201702/ProductPartitionNode.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201702/ProductPartitionNodeAdapter.cs b/src/AdWords/Util/Shopping/v201702/ProductPartitionNodeAdapter.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201702/ProductPartitionNodeAdapter.cs rename to src/AdWords/Util/Shopping/v201702/ProductPartitionNodeAdapter.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201702/ProductPartitionTree.cs b/src/AdWords/Util/Shopping/v201702/ProductPartitionTree.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201702/ProductPartitionTree.cs rename to src/AdWords/Util/Shopping/v201702/ProductPartitionTree.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201705/OperationPair.cs b/src/AdWords/Util/Shopping/v201705/OperationPair.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201705/OperationPair.cs rename to src/AdWords/Util/Shopping/v201705/OperationPair.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparer.cs b/src/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparer.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparer.cs rename to src/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparer.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201705/ProductDimensions.cs b/src/AdWords/Util/Shopping/v201705/ProductDimensions.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201705/ProductDimensions.cs rename to src/AdWords/Util/Shopping/v201705/ProductDimensions.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201705/ProductPartitionNode.cs b/src/AdWords/Util/Shopping/v201705/ProductPartitionNode.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201705/ProductPartitionNode.cs rename to src/AdWords/Util/Shopping/v201705/ProductPartitionNode.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201705/ProductPartitionNodeAdapter.cs b/src/AdWords/Util/Shopping/v201705/ProductPartitionNodeAdapter.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201705/ProductPartitionNodeAdapter.cs rename to src/AdWords/Util/Shopping/v201705/ProductPartitionNodeAdapter.cs diff --git a/adwords/src/AdWords/Util/Shopping/v201705/ProductPartitionTree.cs b/src/AdWords/Util/Shopping/v201705/ProductPartitionTree.cs similarity index 100% rename from adwords/src/AdWords/Util/Shopping/v201705/ProductPartitionTree.cs rename to src/AdWords/Util/Shopping/v201705/ProductPartitionTree.cs diff --git a/adwords/src/AdWords/Util/v201609/MapUtilities.cs b/src/AdWords/Util/v201609/MapUtilities.cs similarity index 100% rename from adwords/src/AdWords/Util/v201609/MapUtilities.cs rename to src/AdWords/Util/v201609/MapUtilities.cs diff --git a/adwords/src/AdWords/Util/v201702/MapUtilities.cs b/src/AdWords/Util/v201702/MapUtilities.cs similarity index 100% rename from adwords/src/AdWords/Util/v201702/MapUtilities.cs rename to src/AdWords/Util/v201702/MapUtilities.cs diff --git a/adwords/src/AdWords/Util/v201705/MapUtilities.cs b/src/AdWords/Util/v201705/MapUtilities.cs similarity index 100% rename from adwords/src/AdWords/Util/v201705/MapUtilities.cs rename to src/AdWords/Util/v201705/MapUtilities.cs diff --git a/adwords/src/AdWords/v201609/AdWordsApi.ProductDimension.cs b/src/AdWords/v201609/AdWordsApi.ProductDimension.cs similarity index 100% rename from adwords/src/AdWords/v201609/AdWordsApi.ProductDimension.cs rename to src/AdWords/v201609/AdWordsApi.ProductDimension.cs diff --git a/adwords/src/AdWords/v201609/AdWordsApi.cs b/src/AdWords/v201609/AdWordsApi.cs similarity index 100% rename from adwords/src/AdWords/v201609/AdWordsApi.cs rename to src/AdWords/v201609/AdWordsApi.cs diff --git a/adwords/src/AdWords/v201609/AdWordsServiceV201609.cs b/src/AdWords/v201609/AdWordsServiceV201609.cs similarity index 100% rename from adwords/src/AdWords/v201609/AdWordsServiceV201609.cs rename to src/AdWords/v201609/AdWordsServiceV201609.cs diff --git a/adwords/src/AdWords/v201609/ApiError.cs b/src/AdWords/v201609/ApiError.cs similarity index 100% rename from adwords/src/AdWords/v201609/ApiError.cs rename to src/AdWords/v201609/ApiError.cs diff --git a/adwords/src/AdWords/v201609/ApiException.cs b/src/AdWords/v201609/ApiException.cs similarity index 100% rename from adwords/src/AdWords/v201609/ApiException.cs rename to src/AdWords/v201609/ApiException.cs diff --git a/adwords/src/AdWords/v201609/BatchJobApi.cs b/src/AdWords/v201609/BatchJobApi.cs similarity index 100% rename from adwords/src/AdWords/v201609/BatchJobApi.cs rename to src/AdWords/v201609/BatchJobApi.cs diff --git a/adwords/src/AdWords/v201609/FeedValidationErrors.cs b/src/AdWords/v201609/FeedValidationErrors.cs similarity index 100% rename from adwords/src/AdWords/v201609/FeedValidationErrors.cs rename to src/AdWords/v201609/FeedValidationErrors.cs diff --git a/adwords/src/AdWords/v201609/OrderBy.cs b/src/AdWords/v201609/OrderBy.cs similarity index 100% rename from adwords/src/AdWords/v201609/OrderBy.cs rename to src/AdWords/v201609/OrderBy.cs diff --git a/adwords/src/AdWords/v201609/Paging.cs b/src/AdWords/v201609/Paging.cs similarity index 100% rename from adwords/src/AdWords/v201609/Paging.cs rename to src/AdWords/v201609/Paging.cs diff --git a/adwords/src/AdWords/v201609/Predicate.cs b/src/AdWords/v201609/Predicate.cs similarity index 100% rename from adwords/src/AdWords/v201609/Predicate.cs rename to src/AdWords/v201609/Predicate.cs diff --git a/adwords/src/AdWords/v201609/ReportDefinition.cs b/src/AdWords/v201609/ReportDefinition.cs similarity index 100% rename from adwords/src/AdWords/v201609/ReportDefinition.cs rename to src/AdWords/v201609/ReportDefinition.cs diff --git a/adwords/src/AdWords/v201702/AdWordsApi.ProductDimension.cs b/src/AdWords/v201702/AdWordsApi.ProductDimension.cs similarity index 100% rename from adwords/src/AdWords/v201702/AdWordsApi.ProductDimension.cs rename to src/AdWords/v201702/AdWordsApi.ProductDimension.cs diff --git a/adwords/src/AdWords/v201702/AdWordsApi.cs b/src/AdWords/v201702/AdWordsApi.cs similarity index 100% rename from adwords/src/AdWords/v201702/AdWordsApi.cs rename to src/AdWords/v201702/AdWordsApi.cs diff --git a/adwords/src/AdWords/v201702/AdWordsServiceV201702.cs b/src/AdWords/v201702/AdWordsServiceV201702.cs similarity index 100% rename from adwords/src/AdWords/v201702/AdWordsServiceV201702.cs rename to src/AdWords/v201702/AdWordsServiceV201702.cs diff --git a/adwords/src/AdWords/v201702/ApiError.cs b/src/AdWords/v201702/ApiError.cs similarity index 100% rename from adwords/src/AdWords/v201702/ApiError.cs rename to src/AdWords/v201702/ApiError.cs diff --git a/adwords/src/AdWords/v201702/ApiException.cs b/src/AdWords/v201702/ApiException.cs similarity index 100% rename from adwords/src/AdWords/v201702/ApiException.cs rename to src/AdWords/v201702/ApiException.cs diff --git a/adwords/src/AdWords/v201702/BatchJobApi.cs b/src/AdWords/v201702/BatchJobApi.cs similarity index 100% rename from adwords/src/AdWords/v201702/BatchJobApi.cs rename to src/AdWords/v201702/BatchJobApi.cs diff --git a/adwords/src/AdWords/v201702/FeedValidationErrors.cs b/src/AdWords/v201702/FeedValidationErrors.cs similarity index 100% rename from adwords/src/AdWords/v201702/FeedValidationErrors.cs rename to src/AdWords/v201702/FeedValidationErrors.cs diff --git a/adwords/src/AdWords/v201702/OrderBy.cs b/src/AdWords/v201702/OrderBy.cs similarity index 100% rename from adwords/src/AdWords/v201702/OrderBy.cs rename to src/AdWords/v201702/OrderBy.cs diff --git a/adwords/src/AdWords/v201702/Paging.cs b/src/AdWords/v201702/Paging.cs similarity index 100% rename from adwords/src/AdWords/v201702/Paging.cs rename to src/AdWords/v201702/Paging.cs diff --git a/adwords/src/AdWords/v201702/Predicate.cs b/src/AdWords/v201702/Predicate.cs similarity index 100% rename from adwords/src/AdWords/v201702/Predicate.cs rename to src/AdWords/v201702/Predicate.cs diff --git a/adwords/src/AdWords/v201702/ReportDefinition.cs b/src/AdWords/v201702/ReportDefinition.cs similarity index 100% rename from adwords/src/AdWords/v201702/ReportDefinition.cs rename to src/AdWords/v201702/ReportDefinition.cs diff --git a/adwords/src/AdWords/v201705/AdWordsApi.ProductDimension.cs b/src/AdWords/v201705/AdWordsApi.ProductDimension.cs similarity index 100% rename from adwords/src/AdWords/v201705/AdWordsApi.ProductDimension.cs rename to src/AdWords/v201705/AdWordsApi.ProductDimension.cs diff --git a/adwords/src/AdWords/v201705/AdWordsApi.cs b/src/AdWords/v201705/AdWordsApi.cs similarity index 100% rename from adwords/src/AdWords/v201705/AdWordsApi.cs rename to src/AdWords/v201705/AdWordsApi.cs diff --git a/adwords/src/AdWords/v201705/AdWordsServiceV201705.cs b/src/AdWords/v201705/AdWordsServiceV201705.cs similarity index 100% rename from adwords/src/AdWords/v201705/AdWordsServiceV201705.cs rename to src/AdWords/v201705/AdWordsServiceV201705.cs diff --git a/adwords/src/AdWords/v201705/ApiError.cs b/src/AdWords/v201705/ApiError.cs similarity index 100% rename from adwords/src/AdWords/v201705/ApiError.cs rename to src/AdWords/v201705/ApiError.cs diff --git a/adwords/src/AdWords/v201705/ApiException.cs b/src/AdWords/v201705/ApiException.cs similarity index 100% rename from adwords/src/AdWords/v201705/ApiException.cs rename to src/AdWords/v201705/ApiException.cs diff --git a/adwords/src/AdWords/v201705/BatchJobApi.cs b/src/AdWords/v201705/BatchJobApi.cs similarity index 100% rename from adwords/src/AdWords/v201705/BatchJobApi.cs rename to src/AdWords/v201705/BatchJobApi.cs diff --git a/adwords/src/AdWords/v201705/FeedValidationErrors.cs b/src/AdWords/v201705/FeedValidationErrors.cs similarity index 100% rename from adwords/src/AdWords/v201705/FeedValidationErrors.cs rename to src/AdWords/v201705/FeedValidationErrors.cs diff --git a/adwords/src/AdWords/v201705/OrderBy.cs b/src/AdWords/v201705/OrderBy.cs similarity index 100% rename from adwords/src/AdWords/v201705/OrderBy.cs rename to src/AdWords/v201705/OrderBy.cs diff --git a/adwords/src/AdWords/v201705/Paging.cs b/src/AdWords/v201705/Paging.cs similarity index 100% rename from adwords/src/AdWords/v201705/Paging.cs rename to src/AdWords/v201705/Paging.cs diff --git a/adwords/src/AdWords/v201705/Predicate.cs b/src/AdWords/v201705/Predicate.cs similarity index 100% rename from adwords/src/AdWords/v201705/Predicate.cs rename to src/AdWords/v201705/Predicate.cs diff --git a/adwords/src/AdWords/v201705/ReportDefinition.cs b/src/AdWords/v201705/ReportDefinition.cs similarity index 100% rename from adwords/src/AdWords/v201705/ReportDefinition.cs rename to src/AdWords/v201705/ReportDefinition.cs diff --git a/adwords/src/Common/AdsApi.snk b/src/Common/AdsApi.snk similarity index 100% rename from adwords/src/Common/AdsApi.snk rename to src/Common/AdsApi.snk diff --git a/adwords/src/Common/Common.csproj b/src/Common/Common.csproj similarity index 100% rename from adwords/src/Common/Common.csproj rename to src/Common/Common.csproj diff --git a/adwords/src/Common/CommonErrorMessages.Designer.cs b/src/Common/CommonErrorMessages.Designer.cs similarity index 100% rename from adwords/src/Common/CommonErrorMessages.Designer.cs rename to src/Common/CommonErrorMessages.Designer.cs diff --git a/adwords/src/Common/CommonErrorMessages.resx b/src/Common/CommonErrorMessages.resx similarity index 100% rename from adwords/src/Common/CommonErrorMessages.resx rename to src/Common/CommonErrorMessages.resx diff --git a/adwords/src/Common/Lib/AdsClient.cs b/src/Common/Lib/AdsClient.cs similarity index 100% rename from adwords/src/Common/Lib/AdsClient.cs rename to src/Common/Lib/AdsClient.cs diff --git a/adwords/src/Common/Lib/AdsException.cs b/src/Common/Lib/AdsException.cs similarity index 100% rename from adwords/src/Common/Lib/AdsException.cs rename to src/Common/Lib/AdsException.cs diff --git a/adwords/src/Common/Lib/AdsOAuthException.cs b/src/Common/Lib/AdsOAuthException.cs similarity index 100% rename from adwords/src/Common/Lib/AdsOAuthException.cs rename to src/Common/Lib/AdsOAuthException.cs diff --git a/adwords/src/Common/Lib/AdsOAuthProvider.cs b/src/Common/Lib/AdsOAuthProvider.cs similarity index 100% rename from adwords/src/Common/Lib/AdsOAuthProvider.cs rename to src/Common/Lib/AdsOAuthProvider.cs diff --git a/adwords/src/Common/Lib/AdsOAuthProviderForApplications.cs b/src/Common/Lib/AdsOAuthProviderForApplications.cs similarity index 100% rename from adwords/src/Common/Lib/AdsOAuthProviderForApplications.cs rename to src/Common/Lib/AdsOAuthProviderForApplications.cs diff --git a/adwords/src/Common/Lib/AdsOAuthProviderForServiceAccounts.cs b/src/Common/Lib/AdsOAuthProviderForServiceAccounts.cs similarity index 100% rename from adwords/src/Common/Lib/AdsOAuthProviderForServiceAccounts.cs rename to src/Common/Lib/AdsOAuthProviderForServiceAccounts.cs diff --git a/adwords/src/Common/Lib/AdsService.cs b/src/Common/Lib/AdsService.cs similarity index 100% rename from adwords/src/Common/Lib/AdsService.cs rename to src/Common/Lib/AdsService.cs diff --git a/adwords/src/Common/Lib/AdsSoapClient.cs b/src/Common/Lib/AdsSoapClient.cs similarity index 100% rename from adwords/src/Common/Lib/AdsSoapClient.cs rename to src/Common/Lib/AdsSoapClient.cs diff --git a/adwords/src/Common/Lib/AdsUser.cs b/src/Common/Lib/AdsUser.cs similarity index 100% rename from adwords/src/Common/Lib/AdsUser.cs rename to src/Common/Lib/AdsUser.cs diff --git a/adwords/src/Common/Lib/AppConfig.cs b/src/Common/Lib/AppConfig.cs similarity index 100% rename from adwords/src/Common/Lib/AppConfig.cs rename to src/Common/Lib/AppConfig.cs diff --git a/adwords/src/Common/Lib/AppConfigBase.cs b/src/Common/Lib/AppConfigBase.cs similarity index 100% rename from adwords/src/Common/Lib/AppConfigBase.cs rename to src/Common/Lib/AppConfigBase.cs diff --git a/adwords/src/Common/Lib/Configurable.cs b/src/Common/Lib/Configurable.cs similarity index 100% rename from adwords/src/Common/Lib/Configurable.cs rename to src/Common/Lib/Configurable.cs diff --git a/adwords/src/Common/Lib/ContextStore.cs b/src/Common/Lib/ContextStore.cs similarity index 100% rename from adwords/src/Common/Lib/ContextStore.cs rename to src/Common/Lib/ContextStore.cs diff --git a/adwords/src/Common/Lib/ErrorHandler.cs b/src/Common/Lib/ErrorHandler.cs similarity index 100% rename from adwords/src/Common/Lib/ErrorHandler.cs rename to src/Common/Lib/ErrorHandler.cs diff --git a/adwords/src/Common/Lib/OAuth2JwtClaimset.cs b/src/Common/Lib/OAuth2JwtClaimset.cs similarity index 100% rename from adwords/src/Common/Lib/OAuth2JwtClaimset.cs rename to src/Common/Lib/OAuth2JwtClaimset.cs diff --git a/adwords/src/Common/Lib/OAuth2JwtClaimsetBuilder.cs b/src/Common/Lib/OAuth2JwtClaimsetBuilder.cs similarity index 100% rename from adwords/src/Common/Lib/OAuth2JwtClaimsetBuilder.cs rename to src/Common/Lib/OAuth2JwtClaimsetBuilder.cs diff --git a/adwords/src/Common/Lib/OAuth2ProviderBase.cs b/src/Common/Lib/OAuth2ProviderBase.cs similarity index 100% rename from adwords/src/Common/Lib/OAuth2ProviderBase.cs rename to src/Common/Lib/OAuth2ProviderBase.cs diff --git a/adwords/src/Common/Lib/OAuth2ProviderForApplications.cs b/src/Common/Lib/OAuth2ProviderForApplications.cs similarity index 100% rename from adwords/src/Common/Lib/OAuth2ProviderForApplications.cs rename to src/Common/Lib/OAuth2ProviderForApplications.cs diff --git a/adwords/src/Common/Lib/OAuth2ProviderForServiceAccounts.cs b/src/Common/Lib/OAuth2ProviderForServiceAccounts.cs similarity index 100% rename from adwords/src/Common/Lib/OAuth2ProviderForServiceAccounts.cs rename to src/Common/Lib/OAuth2ProviderForServiceAccounts.cs diff --git a/adwords/src/Common/Lib/ServiceFactory.cs b/src/Common/Lib/ServiceFactory.cs similarity index 100% rename from adwords/src/Common/Lib/ServiceFactory.cs rename to src/Common/Lib/ServiceFactory.cs diff --git a/adwords/src/Common/Lib/ServiceSignature.cs b/src/Common/Lib/ServiceSignature.cs similarity index 100% rename from adwords/src/Common/Lib/ServiceSignature.cs rename to src/Common/Lib/ServiceSignature.cs diff --git a/adwords/src/Common/Lib/SoapHeaderBase.cs b/src/Common/Lib/SoapHeaderBase.cs similarity index 100% rename from adwords/src/Common/Lib/SoapHeaderBase.cs rename to src/Common/Lib/SoapHeaderBase.cs diff --git a/adwords/src/Common/Logging/AdsFeatureUsageRegistry.cs b/src/Common/Logging/AdsFeatureUsageRegistry.cs similarity index 100% rename from adwords/src/Common/Logging/AdsFeatureUsageRegistry.cs rename to src/Common/Logging/AdsFeatureUsageRegistry.cs diff --git a/adwords/src/Common/Logging/DefaultBodyFormatter.cs b/src/Common/Logging/DefaultBodyFormatter.cs similarity index 100% rename from adwords/src/Common/Logging/DefaultBodyFormatter.cs rename to src/Common/Logging/DefaultBodyFormatter.cs diff --git a/adwords/src/Common/Logging/JsonBodyFormatter.cs b/src/Common/Logging/JsonBodyFormatter.cs similarity index 100% rename from adwords/src/Common/Logging/JsonBodyFormatter.cs rename to src/Common/Logging/JsonBodyFormatter.cs diff --git a/adwords/src/Common/Logging/KeyValueMessageFormatter.cs b/src/Common/Logging/KeyValueMessageFormatter.cs similarity index 100% rename from adwords/src/Common/Logging/KeyValueMessageFormatter.cs rename to src/Common/Logging/KeyValueMessageFormatter.cs diff --git a/adwords/src/Common/Logging/LogEntry.cs b/src/Common/Logging/LogEntry.cs similarity index 100% rename from adwords/src/Common/Logging/LogEntry.cs rename to src/Common/Logging/LogEntry.cs diff --git a/adwords/src/Common/Logging/RequestInfo.cs b/src/Common/Logging/RequestInfo.cs similarity index 100% rename from adwords/src/Common/Logging/RequestInfo.cs rename to src/Common/Logging/RequestInfo.cs diff --git a/adwords/src/Common/Logging/ResponseInfo.cs b/src/Common/Logging/ResponseInfo.cs similarity index 100% rename from adwords/src/Common/Logging/ResponseInfo.cs rename to src/Common/Logging/ResponseInfo.cs diff --git a/adwords/src/Common/Logging/SoapListener.cs b/src/Common/Logging/SoapListener.cs similarity index 100% rename from adwords/src/Common/Logging/SoapListener.cs rename to src/Common/Logging/SoapListener.cs diff --git a/adwords/src/Common/Logging/SoapListenerExtension.cs b/src/Common/Logging/SoapListenerExtension.cs similarity index 100% rename from adwords/src/Common/Logging/SoapListenerExtension.cs rename to src/Common/Logging/SoapListenerExtension.cs diff --git a/adwords/src/Common/Logging/SoapListenerExtensionAttribute.cs b/src/Common/Logging/SoapListenerExtensionAttribute.cs similarity index 100% rename from adwords/src/Common/Logging/SoapListenerExtensionAttribute.cs rename to src/Common/Logging/SoapListenerExtensionAttribute.cs diff --git a/adwords/src/Common/Logging/SoapMessageDirection.cs b/src/Common/Logging/SoapMessageDirection.cs similarity index 100% rename from adwords/src/Common/Logging/SoapMessageDirection.cs rename to src/Common/Logging/SoapMessageDirection.cs diff --git a/adwords/src/Common/Logging/SoapTraceFormatter.cs b/src/Common/Logging/SoapTraceFormatter.cs similarity index 100% rename from adwords/src/Common/Logging/SoapTraceFormatter.cs rename to src/Common/Logging/SoapTraceFormatter.cs diff --git a/adwords/src/Common/Logging/TraceFormatter.cs b/src/Common/Logging/TraceFormatter.cs similarity index 100% rename from adwords/src/Common/Logging/TraceFormatter.cs rename to src/Common/Logging/TraceFormatter.cs diff --git a/adwords/src/Common/Logging/TraceListener.cs b/src/Common/Logging/TraceListener.cs similarity index 100% rename from adwords/src/Common/Logging/TraceListener.cs rename to src/Common/Logging/TraceListener.cs diff --git a/adwords/src/Common/Logging/UrlEncodedBodyFormatter.cs b/src/Common/Logging/UrlEncodedBodyFormatter.cs similarity index 100% rename from adwords/src/Common/Logging/UrlEncodedBodyFormatter.cs rename to src/Common/Logging/UrlEncodedBodyFormatter.cs diff --git a/adwords/src/Common/Properties/AssemblyInfo.cs b/src/Common/Properties/AssemblyInfo.cs similarity index 100% rename from adwords/src/Common/Properties/AssemblyInfo.cs rename to src/Common/Properties/AssemblyInfo.cs diff --git a/adwords/src/Common/Properties/Properties.cs b/src/Common/Properties/Properties.cs similarity index 100% rename from adwords/src/Common/Properties/Properties.cs rename to src/Common/Properties/Properties.cs diff --git a/adwords/src/Common/Util/CollectionUtilities.cs b/src/Common/Util/CollectionUtilities.cs similarity index 100% rename from adwords/src/Common/Util/CollectionUtilities.cs rename to src/Common/Util/CollectionUtilities.cs diff --git a/adwords/src/Common/Util/CsvException.cs b/src/Common/Util/CsvException.cs similarity index 100% rename from adwords/src/Common/Util/CsvException.cs rename to src/Common/Util/CsvException.cs diff --git a/adwords/src/Common/Util/CsvFile.cs b/src/Common/Util/CsvFile.cs similarity index 100% rename from adwords/src/Common/Util/CsvFile.cs rename to src/Common/Util/CsvFile.cs diff --git a/adwords/src/Common/Util/DateTimeProvider.cs b/src/Common/Util/DateTimeProvider.cs similarity index 100% rename from adwords/src/Common/Util/DateTimeProvider.cs rename to src/Common/Util/DateTimeProvider.cs diff --git a/adwords/src/Common/Util/DefaultDateTimeProvider.cs b/src/Common/Util/DefaultDateTimeProvider.cs similarity index 100% rename from adwords/src/Common/Util/DefaultDateTimeProvider.cs rename to src/Common/Util/DefaultDateTimeProvider.cs diff --git a/adwords/src/Common/Util/DeprecationUtilities.cs b/src/Common/Util/DeprecationUtilities.cs similarity index 100% rename from adwords/src/Common/Util/DeprecationUtilities.cs rename to src/Common/Util/DeprecationUtilities.cs diff --git a/adwords/src/Common/Util/HttpUtilities.cs b/src/Common/Util/HttpUtilities.cs similarity index 100% rename from adwords/src/Common/Util/HttpUtilities.cs rename to src/Common/Util/HttpUtilities.cs diff --git a/adwords/src/Common/Util/MediaUtilities.cs b/src/Common/Util/MediaUtilities.cs similarity index 100% rename from adwords/src/Common/Util/MediaUtilities.cs rename to src/Common/Util/MediaUtilities.cs diff --git a/adwords/src/Common/Util/PreconditionUtilities.cs b/src/Common/Util/PreconditionUtilities.cs similarity index 100% rename from adwords/src/Common/Util/PreconditionUtilities.cs rename to src/Common/Util/PreconditionUtilities.cs diff --git a/adwords/src/Common/Util/Reports/AdsReportUtilities.cs b/src/Common/Util/Reports/AdsReportUtilities.cs similarity index 100% rename from adwords/src/Common/Util/Reports/AdsReportUtilities.cs rename to src/Common/Util/Reports/AdsReportUtilities.cs diff --git a/adwords/src/Common/Util/Reports/ReportResponse.cs b/src/Common/Util/Reports/ReportResponse.cs similarity index 100% rename from adwords/src/Common/Util/Reports/ReportResponse.cs rename to src/Common/Util/Reports/ReportResponse.cs diff --git a/adwords/src/Common/Util/Reports/ReportsException.cs b/src/Common/Util/Reports/ReportsException.cs similarity index 100% rename from adwords/src/Common/Util/Reports/ReportsException.cs rename to src/Common/Util/Reports/ReportsException.cs diff --git a/adwords/src/Common/Util/SerializationUtilities.cs b/src/Common/Util/SerializationUtilities.cs similarity index 100% rename from adwords/src/Common/Util/SerializationUtilities.cs rename to src/Common/Util/SerializationUtilities.cs diff --git a/adwords/src/Common/Util/TemporaryIdGenerator.cs b/src/Common/Util/TemporaryIdGenerator.cs similarity index 100% rename from adwords/src/Common/Util/TemporaryIdGenerator.cs rename to src/Common/Util/TemporaryIdGenerator.cs diff --git a/adwords/src/Common/Util/TraceUtilities.cs b/src/Common/Util/TraceUtilities.cs similarity index 100% rename from adwords/src/Common/Util/TraceUtilities.cs rename to src/Common/Util/TraceUtilities.cs diff --git a/adwords/src/Common/Util/XmlUtilities.cs b/src/Common/Util/XmlUtilities.cs similarity index 100% rename from adwords/src/Common/Util/XmlUtilities.cs rename to src/Common/Util/XmlUtilities.cs diff --git a/dfp/src/Dfp/App.config b/src/Dfp/App.config similarity index 100% rename from dfp/src/Dfp/App.config rename to src/Dfp/App.config diff --git a/dfp/src/Dfp/Dfp.csproj b/src/Dfp/Dfp.csproj similarity index 100% rename from dfp/src/Dfp/Dfp.csproj rename to src/Dfp/Dfp.csproj diff --git a/dfp/src/Dfp/DfpErrorMessages.Designer.cs b/src/Dfp/DfpErrorMessages.Designer.cs similarity index 100% rename from dfp/src/Dfp/DfpErrorMessages.Designer.cs rename to src/Dfp/DfpErrorMessages.Designer.cs diff --git a/dfp/src/Dfp/DfpErrorMessages.resx b/src/Dfp/DfpErrorMessages.resx similarity index 100% rename from dfp/src/Dfp/DfpErrorMessages.resx rename to src/Dfp/DfpErrorMessages.resx diff --git a/dfp/src/Dfp/Headers/DfpSoapHeader.cs b/src/Dfp/Headers/DfpSoapHeader.cs similarity index 100% rename from dfp/src/Dfp/Headers/DfpSoapHeader.cs rename to src/Dfp/Headers/DfpSoapHeader.cs diff --git a/dfp/src/Dfp/Headers/RequestHeader.cs b/src/Dfp/Headers/RequestHeader.cs similarity index 100% rename from dfp/src/Dfp/Headers/RequestHeader.cs rename to src/Dfp/Headers/RequestHeader.cs diff --git a/dfp/src/Dfp/Headers/RequestHeaderStub.cs b/src/Dfp/Headers/RequestHeaderStub.cs similarity index 100% rename from dfp/src/Dfp/Headers/RequestHeaderStub.cs rename to src/Dfp/Headers/RequestHeaderStub.cs diff --git a/dfp/src/Dfp/Headers/ResponseHeader.cs b/src/Dfp/Headers/ResponseHeader.cs similarity index 100% rename from dfp/src/Dfp/Headers/ResponseHeader.cs rename to src/Dfp/Headers/ResponseHeader.cs diff --git a/dfp/src/Dfp/Headers/ResponseHeaderStub.cs b/src/Dfp/Headers/ResponseHeaderStub.cs similarity index 100% rename from dfp/src/Dfp/Headers/ResponseHeaderStub.cs rename to src/Dfp/Headers/ResponseHeaderStub.cs diff --git a/dfp/src/Dfp/Lib/DfpApiException.cs b/src/Dfp/Lib/DfpApiException.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpApiException.cs rename to src/Dfp/Lib/DfpApiException.cs diff --git a/dfp/src/Dfp/Lib/DfpAppConfig.cs b/src/Dfp/Lib/DfpAppConfig.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpAppConfig.cs rename to src/Dfp/Lib/DfpAppConfig.cs diff --git a/dfp/src/Dfp/Lib/DfpAuthorizationMethod.cs b/src/Dfp/Lib/DfpAuthorizationMethod.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpAuthorizationMethod.cs rename to src/Dfp/Lib/DfpAuthorizationMethod.cs diff --git a/dfp/src/Dfp/Lib/DfpException.cs b/src/Dfp/Lib/DfpException.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpException.cs rename to src/Dfp/Lib/DfpException.cs diff --git a/dfp/src/Dfp/Lib/DfpService.cs b/src/Dfp/Lib/DfpService.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpService.cs rename to src/Dfp/Lib/DfpService.cs diff --git a/dfp/src/Dfp/Lib/DfpServiceFactory.cs b/src/Dfp/Lib/DfpServiceFactory.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpServiceFactory.cs rename to src/Dfp/Lib/DfpServiceFactory.cs diff --git a/dfp/src/Dfp/Lib/DfpServiceSignature.cs b/src/Dfp/Lib/DfpServiceSignature.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpServiceSignature.cs rename to src/Dfp/Lib/DfpServiceSignature.cs diff --git a/dfp/src/Dfp/Lib/DfpSoapClient.cs b/src/Dfp/Lib/DfpSoapClient.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpSoapClient.cs rename to src/Dfp/Lib/DfpSoapClient.cs diff --git a/dfp/src/Dfp/Lib/DfpTraceListener.cs b/src/Dfp/Lib/DfpTraceListener.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpTraceListener.cs rename to src/Dfp/Lib/DfpTraceListener.cs diff --git a/dfp/src/Dfp/Lib/DfpUser.cs b/src/Dfp/Lib/DfpUser.cs similarity index 100% rename from dfp/src/Dfp/Lib/DfpUser.cs rename to src/Dfp/Lib/DfpUser.cs diff --git a/dfp/src/Dfp/Properties/AssemblyInfo.cs b/src/Dfp/Properties/AssemblyInfo.cs similarity index 100% rename from dfp/src/Dfp/Properties/AssemblyInfo.cs rename to src/Dfp/Properties/AssemblyInfo.cs diff --git a/dfp/src/Dfp/Properties/Properties.cs b/src/Dfp/Properties/Properties.cs similarity index 100% rename from dfp/src/Dfp/Properties/Properties.cs rename to src/Dfp/Properties/Properties.cs diff --git a/dfp/src/Dfp/Util/v201608/DateTimeUtilities.cs b/src/Dfp/Util/v201608/DateTimeUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201608/DateTimeUtilities.cs rename to src/Dfp/Util/v201608/DateTimeUtilities.cs diff --git a/dfp/src/Dfp/Util/v201608/PqlUtilities.cs b/src/Dfp/Util/v201608/PqlUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201608/PqlUtilities.cs rename to src/Dfp/Util/v201608/PqlUtilities.cs diff --git a/dfp/src/Dfp/Util/v201608/ReportUtilities.cs b/src/Dfp/Util/v201608/ReportUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201608/ReportUtilities.cs rename to src/Dfp/Util/v201608/ReportUtilities.cs diff --git a/dfp/src/Dfp/Util/v201608/StatementBuilder.cs b/src/Dfp/Util/v201608/StatementBuilder.cs similarity index 100% rename from dfp/src/Dfp/Util/v201608/StatementBuilder.cs rename to src/Dfp/Util/v201608/StatementBuilder.cs diff --git a/dfp/src/Dfp/Util/v201611/DateTimeUtilities.cs b/src/Dfp/Util/v201611/DateTimeUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201611/DateTimeUtilities.cs rename to src/Dfp/Util/v201611/DateTimeUtilities.cs diff --git a/dfp/src/Dfp/Util/v201611/PqlUtilities.cs b/src/Dfp/Util/v201611/PqlUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201611/PqlUtilities.cs rename to src/Dfp/Util/v201611/PqlUtilities.cs diff --git a/dfp/src/Dfp/Util/v201611/ReportUtilities.cs b/src/Dfp/Util/v201611/ReportUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201611/ReportUtilities.cs rename to src/Dfp/Util/v201611/ReportUtilities.cs diff --git a/dfp/src/Dfp/Util/v201611/StatementBuilder.cs b/src/Dfp/Util/v201611/StatementBuilder.cs similarity index 100% rename from dfp/src/Dfp/Util/v201611/StatementBuilder.cs rename to src/Dfp/Util/v201611/StatementBuilder.cs diff --git a/dfp/src/Dfp/Util/v201702/DateTimeUtilities.cs b/src/Dfp/Util/v201702/DateTimeUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201702/DateTimeUtilities.cs rename to src/Dfp/Util/v201702/DateTimeUtilities.cs diff --git a/dfp/src/Dfp/Util/v201702/PqlUtilities.cs b/src/Dfp/Util/v201702/PqlUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201702/PqlUtilities.cs rename to src/Dfp/Util/v201702/PqlUtilities.cs diff --git a/dfp/src/Dfp/Util/v201702/ReportUtilities.cs b/src/Dfp/Util/v201702/ReportUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201702/ReportUtilities.cs rename to src/Dfp/Util/v201702/ReportUtilities.cs diff --git a/dfp/src/Dfp/Util/v201702/StatementBuilder.cs b/src/Dfp/Util/v201702/StatementBuilder.cs similarity index 100% rename from dfp/src/Dfp/Util/v201702/StatementBuilder.cs rename to src/Dfp/Util/v201702/StatementBuilder.cs diff --git a/dfp/src/Dfp/Util/v201705/DateTimeUtilities.cs b/src/Dfp/Util/v201705/DateTimeUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201705/DateTimeUtilities.cs rename to src/Dfp/Util/v201705/DateTimeUtilities.cs diff --git a/dfp/src/Dfp/Util/v201705/PqlUtilities.cs b/src/Dfp/Util/v201705/PqlUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201705/PqlUtilities.cs rename to src/Dfp/Util/v201705/PqlUtilities.cs diff --git a/dfp/src/Dfp/Util/v201705/ReportUtilities.cs b/src/Dfp/Util/v201705/ReportUtilities.cs similarity index 100% rename from dfp/src/Dfp/Util/v201705/ReportUtilities.cs rename to src/Dfp/Util/v201705/ReportUtilities.cs diff --git a/dfp/src/Dfp/Util/v201705/StatementBuilder.cs b/src/Dfp/Util/v201705/StatementBuilder.cs similarity index 100% rename from dfp/src/Dfp/Util/v201705/StatementBuilder.cs rename to src/Dfp/Util/v201705/StatementBuilder.cs diff --git a/dfp/src/Dfp/v201608/DfpApi.cs b/src/Dfp/v201608/DfpApi.cs similarity index 100% rename from dfp/src/Dfp/v201608/DfpApi.cs rename to src/Dfp/v201608/DfpApi.cs diff --git a/dfp/src/Dfp/v201608/DfpServiceV201608.cs b/src/Dfp/v201608/DfpServiceV201608.cs similarity index 100% rename from dfp/src/Dfp/v201608/DfpServiceV201608.cs rename to src/Dfp/v201608/DfpServiceV201608.cs diff --git a/dfp/src/Dfp/v201611/DfpApi.cs b/src/Dfp/v201611/DfpApi.cs similarity index 100% rename from dfp/src/Dfp/v201611/DfpApi.cs rename to src/Dfp/v201611/DfpApi.cs diff --git a/dfp/src/Dfp/v201611/DfpServiceV201611.cs b/src/Dfp/v201611/DfpServiceV201611.cs similarity index 100% rename from dfp/src/Dfp/v201611/DfpServiceV201611.cs rename to src/Dfp/v201611/DfpServiceV201611.cs diff --git a/dfp/src/Dfp/v201702/DfpApi.cs b/src/Dfp/v201702/DfpApi.cs similarity index 100% rename from dfp/src/Dfp/v201702/DfpApi.cs rename to src/Dfp/v201702/DfpApi.cs diff --git a/dfp/src/Dfp/v201702/DfpServiceV201702.cs b/src/Dfp/v201702/DfpServiceV201702.cs similarity index 100% rename from dfp/src/Dfp/v201702/DfpServiceV201702.cs rename to src/Dfp/v201702/DfpServiceV201702.cs diff --git a/dfp/src/Dfp/v201705/DfpApi.cs b/src/Dfp/v201705/DfpApi.cs similarity index 100% rename from dfp/src/Dfp/v201705/DfpApi.cs rename to src/Dfp/v201705/DfpApi.cs diff --git a/dfp/src/Dfp/v201705/DfpServiceV201705.cs b/src/Dfp/v201705/DfpServiceV201705.cs similarity index 100% rename from dfp/src/Dfp/v201705/DfpServiceV201705.cs rename to src/Dfp/v201705/DfpServiceV201705.cs diff --git a/adwords/tests/AdWords/AdWords.Tests.csproj b/tests/AdWords/AdWords.Tests.csproj similarity index 100% rename from adwords/tests/AdWords/AdWords.Tests.csproj rename to tests/AdWords/AdWords.Tests.csproj diff --git a/adwords/tests/AdWords/AdWordsRequestInterceptor.cs b/tests/AdWords/AdWordsRequestInterceptor.cs similarity index 100% rename from adwords/tests/AdWords/AdWordsRequestInterceptor.cs rename to tests/AdWords/AdWordsRequestInterceptor.cs diff --git a/adwords/tests/AdWords/App.config b/tests/AdWords/App.config similarity index 100% rename from adwords/tests/AdWords/App.config rename to tests/AdWords/App.config diff --git a/adwords/tests/AdWords/EnumIntegrityTests.cs b/tests/AdWords/EnumIntegrityTests.cs similarity index 100% rename from adwords/tests/AdWords/EnumIntegrityTests.cs rename to tests/AdWords/EnumIntegrityTests.cs diff --git a/adwords/tests/AdWords/ExampleTestsBase.cs b/tests/AdWords/ExampleTestsBase.cs similarity index 100% rename from adwords/tests/AdWords/ExampleTestsBase.cs rename to tests/AdWords/ExampleTestsBase.cs diff --git a/adwords/tests/AdWords/ExamplesMockData.cs b/tests/AdWords/ExamplesMockData.cs similarity index 100% rename from adwords/tests/AdWords/ExamplesMockData.cs rename to tests/AdWords/ExamplesMockData.cs diff --git a/adwords/tests/AdWords/Lib/AdWordsAppConfigTest.cs b/tests/AdWords/Lib/AdWordsAppConfigTest.cs similarity index 100% rename from adwords/tests/AdWords/Lib/AdWordsAppConfigTest.cs rename to tests/AdWords/Lib/AdWordsAppConfigTest.cs diff --git a/adwords/tests/AdWords/Lib/AdWordsCallListenerTest.cs b/tests/AdWords/Lib/AdWordsCallListenerTest.cs similarity index 100% rename from adwords/tests/AdWords/Lib/AdWordsCallListenerTest.cs rename to tests/AdWords/Lib/AdWordsCallListenerTest.cs diff --git a/adwords/tests/AdWords/Lib/AdWordsServiceFactoryTests.cs b/tests/AdWords/Lib/AdWordsServiceFactoryTests.cs similarity index 100% rename from adwords/tests/AdWords/Lib/AdWordsServiceFactoryTests.cs rename to tests/AdWords/Lib/AdWordsServiceFactoryTests.cs diff --git a/adwords/tests/AdWords/MockUtilities.cs b/tests/AdWords/MockUtilities.cs similarity index 100% rename from adwords/tests/AdWords/MockUtilities.cs rename to tests/AdWords/MockUtilities.cs diff --git a/adwords/tests/AdWords/MockedExampleTestsBase.cs b/tests/AdWords/MockedExampleTestsBase.cs similarity index 100% rename from adwords/tests/AdWords/MockedExampleTestsBase.cs rename to tests/AdWords/MockedExampleTestsBase.cs diff --git a/adwords/tests/AdWords/Properties/AssemblyInfo.cs b/tests/AdWords/Properties/AssemblyInfo.cs similarity index 100% rename from adwords/tests/AdWords/Properties/AssemblyInfo.cs rename to tests/AdWords/Properties/AssemblyInfo.cs diff --git a/adwords/tests/AdWords/Properties/Properties.cs b/tests/AdWords/Properties/Properties.cs similarity index 100% rename from adwords/tests/AdWords/Properties/Properties.cs rename to tests/AdWords/Properties/Properties.cs diff --git a/adwords/tests/AdWords/Resources/UpdateCampaign.v201609.txt b/tests/AdWords/Resources/UpdateCampaign.v201609.txt similarity index 100% rename from adwords/tests/AdWords/Resources/UpdateCampaign.v201609.txt rename to tests/AdWords/Resources/UpdateCampaign.v201609.txt diff --git a/adwords/tests/AdWords/Resources/UpdateCampaign.v201702.txt b/tests/AdWords/Resources/UpdateCampaign.v201702.txt similarity index 100% rename from adwords/tests/AdWords/Resources/UpdateCampaign.v201702.txt rename to tests/AdWords/Resources/UpdateCampaign.v201702.txt diff --git a/adwords/tests/AdWords/Resources/UpdateCampaign.v201705.txt b/tests/AdWords/Resources/UpdateCampaign.v201705.txt similarity index 100% rename from adwords/tests/AdWords/Resources/UpdateCampaign.v201705.txt rename to tests/AdWords/Resources/UpdateCampaign.v201705.txt diff --git a/adwords/tests/AdWords/ServiceCreationTests.cs b/tests/AdWords/ServiceCreationTests.cs similarity index 100% rename from adwords/tests/AdWords/ServiceCreationTests.cs rename to tests/AdWords/ServiceCreationTests.cs diff --git a/adwords/tests/AdWords/SoapMessages.v201609.Designer.cs b/tests/AdWords/SoapMessages.v201609.Designer.cs similarity index 100% rename from adwords/tests/AdWords/SoapMessages.v201609.Designer.cs rename to tests/AdWords/SoapMessages.v201609.Designer.cs diff --git a/adwords/tests/AdWords/SoapMessages.v201609.resx b/tests/AdWords/SoapMessages.v201609.resx similarity index 100% rename from adwords/tests/AdWords/SoapMessages.v201609.resx rename to tests/AdWords/SoapMessages.v201609.resx diff --git a/adwords/tests/AdWords/SoapMessages.v201702.Designer.cs b/tests/AdWords/SoapMessages.v201702.Designer.cs similarity index 100% rename from adwords/tests/AdWords/SoapMessages.v201702.Designer.cs rename to tests/AdWords/SoapMessages.v201702.Designer.cs diff --git a/adwords/tests/AdWords/SoapMessages.v201702.resx b/tests/AdWords/SoapMessages.v201702.resx similarity index 100% rename from adwords/tests/AdWords/SoapMessages.v201702.resx rename to tests/AdWords/SoapMessages.v201702.resx diff --git a/adwords/tests/AdWords/SoapMessages.v201705.Designer.cs b/tests/AdWords/SoapMessages.v201705.Designer.cs similarity index 100% rename from adwords/tests/AdWords/SoapMessages.v201705.Designer.cs rename to tests/AdWords/SoapMessages.v201705.Designer.cs diff --git a/adwords/tests/AdWords/SoapMessages.v201705.resx b/tests/AdWords/SoapMessages.v201705.resx similarity index 100% rename from adwords/tests/AdWords/SoapMessages.v201705.resx rename to tests/AdWords/SoapMessages.v201705.resx diff --git a/adwords/tests/AdWords/Util/BatchJob/v201609/BatchJobUtilitiesTest.cs b/tests/AdWords/Util/BatchJob/v201609/BatchJobUtilitiesTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/BatchJob/v201609/BatchJobUtilitiesTest.cs rename to tests/AdWords/Util/BatchJob/v201609/BatchJobUtilitiesTest.cs diff --git a/adwords/tests/AdWords/Util/BatchJob/v201702/BatchJobUtilitiesTest.cs b/tests/AdWords/Util/BatchJob/v201702/BatchJobUtilitiesTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/BatchJob/v201702/BatchJobUtilitiesTest.cs rename to tests/AdWords/Util/BatchJob/v201702/BatchJobUtilitiesTest.cs diff --git a/adwords/tests/AdWords/Util/BatchJob/v201705/BatchJobUtilitiesTest.cs b/tests/AdWords/Util/BatchJob/v201705/BatchJobUtilitiesTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/BatchJob/v201705/BatchJobUtilitiesTest.cs rename to tests/AdWords/Util/BatchJob/v201705/BatchJobUtilitiesTest.cs diff --git a/adwords/tests/AdWords/Util/Reports/Parser/AwReportTest.cs b/tests/AdWords/Util/Reports/Parser/AwReportTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/AwReportTest.cs rename to tests/AdWords/Util/Reports/Parser/AwReportTest.cs diff --git a/adwords/tests/AdWords/Util/Reports/Parser/InputTextReaderTest.cs b/tests/AdWords/Util/Reports/Parser/InputTextReaderTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/InputTextReaderTest.cs rename to tests/AdWords/Util/Reports/Parser/InputTextReaderTest.cs diff --git a/adwords/tests/AdWords/Util/Reports/Parser/ReportParserUtilsTest.cs b/tests/AdWords/Util/Reports/Parser/ReportParserUtilsTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/ReportParserUtilsTest.cs rename to tests/AdWords/Util/Reports/Parser/ReportParserUtilsTest.cs diff --git a/adwords/tests/AdWords/Util/Reports/Parser/Resources.Designer.cs b/tests/AdWords/Util/Reports/Parser/Resources.Designer.cs similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/Resources.Designer.cs rename to tests/AdWords/Util/Reports/Parser/Resources.Designer.cs diff --git a/adwords/tests/AdWords/Util/Reports/Parser/Resources.resx b/tests/AdWords/Util/Reports/Parser/Resources.resx similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/Resources.resx rename to tests/AdWords/Util/Reports/Parser/Resources.resx diff --git a/adwords/tests/AdWords/Util/Reports/Parser/Resources/FaultyXML.xml b/tests/AdWords/Util/Reports/Parser/Resources/FaultyXML.xml similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/Resources/FaultyXML.xml rename to tests/AdWords/Util/Reports/Parser/Resources/FaultyXML.xml diff --git a/adwords/tests/AdWords/Util/Reports/Parser/Resources/ValidXMLDistinctRows.xml b/tests/AdWords/Util/Reports/Parser/Resources/ValidXMLDistinctRows.xml similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/Resources/ValidXMLDistinctRows.xml rename to tests/AdWords/Util/Reports/Parser/Resources/ValidXMLDistinctRows.xml diff --git a/adwords/tests/AdWords/Util/Reports/Parser/Resources/ValidXMLRepeatedRows.xml b/tests/AdWords/Util/Reports/Parser/Resources/ValidXMLRepeatedRows.xml similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/Resources/ValidXMLRepeatedRows.xml rename to tests/AdWords/Util/Reports/Parser/Resources/ValidXMLRepeatedRows.xml diff --git a/adwords/tests/AdWords/Util/Reports/Parser/TestUtils.cs b/tests/AdWords/Util/Reports/Parser/TestUtils.cs similarity index 100% rename from adwords/tests/AdWords/Util/Reports/Parser/TestUtils.cs rename to tests/AdWords/Util/Reports/Parser/TestUtils.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparerTest.cs b/tests/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparerTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparerTest.cs rename to tests/AdWords/Util/Shopping/v201609/ProductDimensionEqualityComparerTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201609/ProductDimensionsTest.cs b/tests/AdWords/Util/Shopping/v201609/ProductDimensionsTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201609/ProductDimensionsTest.cs rename to tests/AdWords/Util/Shopping/v201609/ProductDimensionsTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201609/ProductPartitionNodeTest.cs b/tests/AdWords/Util/Shopping/v201609/ProductPartitionNodeTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201609/ProductPartitionNodeTest.cs rename to tests/AdWords/Util/Shopping/v201609/ProductPartitionNodeTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201609/ProductPartitionTreeIntegrationTests.cs b/tests/AdWords/Util/Shopping/v201609/ProductPartitionTreeIntegrationTests.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201609/ProductPartitionTreeIntegrationTests.cs rename to tests/AdWords/Util/Shopping/v201609/ProductPartitionTreeIntegrationTests.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201609/ProductPartitionTreeTest.cs b/tests/AdWords/Util/Shopping/v201609/ProductPartitionTreeTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201609/ProductPartitionTreeTest.cs rename to tests/AdWords/Util/Shopping/v201609/ProductPartitionTreeTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparerTest.cs b/tests/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparerTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparerTest.cs rename to tests/AdWords/Util/Shopping/v201702/ProductDimensionEqualityComparerTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201702/ProductDimensionsTest.cs b/tests/AdWords/Util/Shopping/v201702/ProductDimensionsTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201702/ProductDimensionsTest.cs rename to tests/AdWords/Util/Shopping/v201702/ProductDimensionsTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201702/ProductPartitionNodeTest.cs b/tests/AdWords/Util/Shopping/v201702/ProductPartitionNodeTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201702/ProductPartitionNodeTest.cs rename to tests/AdWords/Util/Shopping/v201702/ProductPartitionNodeTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201702/ProductPartitionTreeIntegrationTests.cs b/tests/AdWords/Util/Shopping/v201702/ProductPartitionTreeIntegrationTests.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201702/ProductPartitionTreeIntegrationTests.cs rename to tests/AdWords/Util/Shopping/v201702/ProductPartitionTreeIntegrationTests.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201702/ProductPartitionTreeTest.cs b/tests/AdWords/Util/Shopping/v201702/ProductPartitionTreeTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201702/ProductPartitionTreeTest.cs rename to tests/AdWords/Util/Shopping/v201702/ProductPartitionTreeTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparerTest.cs b/tests/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparerTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparerTest.cs rename to tests/AdWords/Util/Shopping/v201705/ProductDimensionEqualityComparerTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201705/ProductDimensionsTest.cs b/tests/AdWords/Util/Shopping/v201705/ProductDimensionsTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201705/ProductDimensionsTest.cs rename to tests/AdWords/Util/Shopping/v201705/ProductDimensionsTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201705/ProductPartitionNodeTest.cs b/tests/AdWords/Util/Shopping/v201705/ProductPartitionNodeTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201705/ProductPartitionNodeTest.cs rename to tests/AdWords/Util/Shopping/v201705/ProductPartitionNodeTest.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201705/ProductPartitionTreeIntegrationTests.cs b/tests/AdWords/Util/Shopping/v201705/ProductPartitionTreeIntegrationTests.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201705/ProductPartitionTreeIntegrationTests.cs rename to tests/AdWords/Util/Shopping/v201705/ProductPartitionTreeIntegrationTests.cs diff --git a/adwords/tests/AdWords/Util/Shopping/v201705/ProductPartitionTreeTest.cs b/tests/AdWords/Util/Shopping/v201705/ProductPartitionTreeTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/Shopping/v201705/ProductPartitionTreeTest.cs rename to tests/AdWords/Util/Shopping/v201705/ProductPartitionTreeTest.cs diff --git a/adwords/tests/AdWords/Util/v201609/MapUtilitiesTest.cs b/tests/AdWords/Util/v201609/MapUtilitiesTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/v201609/MapUtilitiesTest.cs rename to tests/AdWords/Util/v201609/MapUtilitiesTest.cs diff --git a/adwords/tests/AdWords/Util/v201702/MapUtilitiesTest.cs b/tests/AdWords/Util/v201702/MapUtilitiesTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/v201702/MapUtilitiesTest.cs rename to tests/AdWords/Util/v201702/MapUtilitiesTest.cs diff --git a/adwords/tests/AdWords/Util/v201705/MapUtilitiesTest.cs b/tests/AdWords/Util/v201705/MapUtilitiesTest.cs similarity index 100% rename from adwords/tests/AdWords/Util/v201705/MapUtilitiesTest.cs rename to tests/AdWords/Util/v201705/MapUtilitiesTest.cs diff --git a/adwords/tests/AdWords/v201609/AccountManagementTest.cs b/tests/AdWords/v201609/AccountManagementTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/AccountManagementTest.cs rename to tests/AdWords/v201609/AccountManagementTest.cs diff --git a/adwords/tests/AdWords/v201609/AdvancedOperationsTest.cs b/tests/AdWords/v201609/AdvancedOperationsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/AdvancedOperationsTest.cs rename to tests/AdWords/v201609/AdvancedOperationsTest.cs diff --git a/adwords/tests/AdWords/v201609/BasicOperationsTest.cs b/tests/AdWords/v201609/BasicOperationsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/BasicOperationsTest.cs rename to tests/AdWords/v201609/BasicOperationsTest.cs diff --git a/adwords/tests/AdWords/v201609/CampaignManagementTest.cs b/tests/AdWords/v201609/CampaignManagementTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/CampaignManagementTest.cs rename to tests/AdWords/v201609/CampaignManagementTest.cs diff --git a/adwords/tests/AdWords/v201609/ErrorHandlingTest.cs b/tests/AdWords/v201609/ErrorHandlingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/ErrorHandlingTest.cs rename to tests/AdWords/v201609/ErrorHandlingTest.cs diff --git a/adwords/tests/AdWords/v201609/ExtensionsTest.cs b/tests/AdWords/v201609/ExtensionsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/ExtensionsTest.cs rename to tests/AdWords/v201609/ExtensionsTest.cs diff --git a/adwords/tests/AdWords/v201609/MigrationTest.cs b/tests/AdWords/v201609/MigrationTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/MigrationTest.cs rename to tests/AdWords/v201609/MigrationTest.cs diff --git a/adwords/tests/AdWords/v201609/MiscellaneousTest.cs b/tests/AdWords/v201609/MiscellaneousTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/MiscellaneousTest.cs rename to tests/AdWords/v201609/MiscellaneousTest.cs diff --git a/adwords/tests/AdWords/v201609/MockTests.cs b/tests/AdWords/v201609/MockTests.cs similarity index 100% rename from adwords/tests/AdWords/v201609/MockTests.cs rename to tests/AdWords/v201609/MockTests.cs diff --git a/adwords/tests/AdWords/v201609/OptimizationTest.cs b/tests/AdWords/v201609/OptimizationTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/OptimizationTest.cs rename to tests/AdWords/v201609/OptimizationTest.cs diff --git a/adwords/tests/AdWords/v201609/RemarketingTest.cs b/tests/AdWords/v201609/RemarketingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/RemarketingTest.cs rename to tests/AdWords/v201609/RemarketingTest.cs diff --git a/adwords/tests/AdWords/v201609/ReportingTest.cs b/tests/AdWords/v201609/ReportingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/ReportingTest.cs rename to tests/AdWords/v201609/ReportingTest.cs diff --git a/adwords/tests/AdWords/v201609/ShoppingCampaignsTest.cs b/tests/AdWords/v201609/ShoppingCampaignsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/ShoppingCampaignsTest.cs rename to tests/AdWords/v201609/ShoppingCampaignsTest.cs diff --git a/adwords/tests/AdWords/v201609/ShoppingTestUtils.cs b/tests/AdWords/v201609/ShoppingTestUtils.cs similarity index 100% rename from adwords/tests/AdWords/v201609/ShoppingTestUtils.cs rename to tests/AdWords/v201609/ShoppingTestUtils.cs diff --git a/adwords/tests/AdWords/v201609/TargetingTest.cs b/tests/AdWords/v201609/TargetingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201609/TargetingTest.cs rename to tests/AdWords/v201609/TargetingTest.cs diff --git a/adwords/tests/AdWords/v201609/TestUtils.cs b/tests/AdWords/v201609/TestUtils.cs similarity index 100% rename from adwords/tests/AdWords/v201609/TestUtils.cs rename to tests/AdWords/v201609/TestUtils.cs diff --git a/adwords/tests/AdWords/v201609/VersionedExampleTestsBase.cs b/tests/AdWords/v201609/VersionedExampleTestsBase.cs similarity index 100% rename from adwords/tests/AdWords/v201609/VersionedExampleTestsBase.cs rename to tests/AdWords/v201609/VersionedExampleTestsBase.cs diff --git a/adwords/tests/AdWords/v201609/VersionedMockedExampleTestsBase.cs b/tests/AdWords/v201609/VersionedMockedExampleTestsBase.cs similarity index 100% rename from adwords/tests/AdWords/v201609/VersionedMockedExampleTestsBase.cs rename to tests/AdWords/v201609/VersionedMockedExampleTestsBase.cs diff --git a/adwords/tests/AdWords/v201702/AccountManagementTest.cs b/tests/AdWords/v201702/AccountManagementTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/AccountManagementTest.cs rename to tests/AdWords/v201702/AccountManagementTest.cs diff --git a/adwords/tests/AdWords/v201702/AdvancedOperationsTest.cs b/tests/AdWords/v201702/AdvancedOperationsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/AdvancedOperationsTest.cs rename to tests/AdWords/v201702/AdvancedOperationsTest.cs diff --git a/adwords/tests/AdWords/v201702/BasicOperationsTest.cs b/tests/AdWords/v201702/BasicOperationsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/BasicOperationsTest.cs rename to tests/AdWords/v201702/BasicOperationsTest.cs diff --git a/adwords/tests/AdWords/v201702/CampaignManagementTest.cs b/tests/AdWords/v201702/CampaignManagementTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/CampaignManagementTest.cs rename to tests/AdWords/v201702/CampaignManagementTest.cs diff --git a/adwords/tests/AdWords/v201702/ErrorHandlingTest.cs b/tests/AdWords/v201702/ErrorHandlingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/ErrorHandlingTest.cs rename to tests/AdWords/v201702/ErrorHandlingTest.cs diff --git a/adwords/tests/AdWords/v201702/ExtensionsTest.cs b/tests/AdWords/v201702/ExtensionsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/ExtensionsTest.cs rename to tests/AdWords/v201702/ExtensionsTest.cs diff --git a/adwords/tests/AdWords/v201702/MigrationTest.cs b/tests/AdWords/v201702/MigrationTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/MigrationTest.cs rename to tests/AdWords/v201702/MigrationTest.cs diff --git a/adwords/tests/AdWords/v201702/MiscellaneousTest.cs b/tests/AdWords/v201702/MiscellaneousTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/MiscellaneousTest.cs rename to tests/AdWords/v201702/MiscellaneousTest.cs diff --git a/adwords/tests/AdWords/v201702/MockTests.cs b/tests/AdWords/v201702/MockTests.cs similarity index 100% rename from adwords/tests/AdWords/v201702/MockTests.cs rename to tests/AdWords/v201702/MockTests.cs diff --git a/adwords/tests/AdWords/v201702/OptimizationTest.cs b/tests/AdWords/v201702/OptimizationTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/OptimizationTest.cs rename to tests/AdWords/v201702/OptimizationTest.cs diff --git a/adwords/tests/AdWords/v201702/RemarketingTest.cs b/tests/AdWords/v201702/RemarketingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/RemarketingTest.cs rename to tests/AdWords/v201702/RemarketingTest.cs diff --git a/adwords/tests/AdWords/v201702/ReportingTest.cs b/tests/AdWords/v201702/ReportingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/ReportingTest.cs rename to tests/AdWords/v201702/ReportingTest.cs diff --git a/adwords/tests/AdWords/v201702/ShoppingCampaignsTest.cs b/tests/AdWords/v201702/ShoppingCampaignsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/ShoppingCampaignsTest.cs rename to tests/AdWords/v201702/ShoppingCampaignsTest.cs diff --git a/adwords/tests/AdWords/v201702/ShoppingTestUtils.cs b/tests/AdWords/v201702/ShoppingTestUtils.cs similarity index 100% rename from adwords/tests/AdWords/v201702/ShoppingTestUtils.cs rename to tests/AdWords/v201702/ShoppingTestUtils.cs diff --git a/adwords/tests/AdWords/v201702/TargetingTest.cs b/tests/AdWords/v201702/TargetingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201702/TargetingTest.cs rename to tests/AdWords/v201702/TargetingTest.cs diff --git a/adwords/tests/AdWords/v201702/TestUtils.cs b/tests/AdWords/v201702/TestUtils.cs similarity index 100% rename from adwords/tests/AdWords/v201702/TestUtils.cs rename to tests/AdWords/v201702/TestUtils.cs diff --git a/adwords/tests/AdWords/v201702/VersionedExampleTestsBase.cs b/tests/AdWords/v201702/VersionedExampleTestsBase.cs similarity index 100% rename from adwords/tests/AdWords/v201702/VersionedExampleTestsBase.cs rename to tests/AdWords/v201702/VersionedExampleTestsBase.cs diff --git a/adwords/tests/AdWords/v201702/VersionedMockedExampleTestsBase.cs b/tests/AdWords/v201702/VersionedMockedExampleTestsBase.cs similarity index 100% rename from adwords/tests/AdWords/v201702/VersionedMockedExampleTestsBase.cs rename to tests/AdWords/v201702/VersionedMockedExampleTestsBase.cs diff --git a/adwords/tests/AdWords/v201705/AccountManagementTest.cs b/tests/AdWords/v201705/AccountManagementTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/AccountManagementTest.cs rename to tests/AdWords/v201705/AccountManagementTest.cs diff --git a/adwords/tests/AdWords/v201705/AdvancedOperationsTest.cs b/tests/AdWords/v201705/AdvancedOperationsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/AdvancedOperationsTest.cs rename to tests/AdWords/v201705/AdvancedOperationsTest.cs diff --git a/adwords/tests/AdWords/v201705/BasicOperationsTest.cs b/tests/AdWords/v201705/BasicOperationsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/BasicOperationsTest.cs rename to tests/AdWords/v201705/BasicOperationsTest.cs diff --git a/adwords/tests/AdWords/v201705/CampaignManagementTest.cs b/tests/AdWords/v201705/CampaignManagementTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/CampaignManagementTest.cs rename to tests/AdWords/v201705/CampaignManagementTest.cs diff --git a/adwords/tests/AdWords/v201705/ErrorHandlingTest.cs b/tests/AdWords/v201705/ErrorHandlingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/ErrorHandlingTest.cs rename to tests/AdWords/v201705/ErrorHandlingTest.cs diff --git a/adwords/tests/AdWords/v201705/ExtensionsTest.cs b/tests/AdWords/v201705/ExtensionsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/ExtensionsTest.cs rename to tests/AdWords/v201705/ExtensionsTest.cs diff --git a/adwords/tests/AdWords/v201705/MigrationTest.cs b/tests/AdWords/v201705/MigrationTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/MigrationTest.cs rename to tests/AdWords/v201705/MigrationTest.cs diff --git a/adwords/tests/AdWords/v201705/MiscellaneousTest.cs b/tests/AdWords/v201705/MiscellaneousTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/MiscellaneousTest.cs rename to tests/AdWords/v201705/MiscellaneousTest.cs diff --git a/adwords/tests/AdWords/v201705/MockTests.cs b/tests/AdWords/v201705/MockTests.cs similarity index 100% rename from adwords/tests/AdWords/v201705/MockTests.cs rename to tests/AdWords/v201705/MockTests.cs diff --git a/adwords/tests/AdWords/v201705/OptimizationTest.cs b/tests/AdWords/v201705/OptimizationTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/OptimizationTest.cs rename to tests/AdWords/v201705/OptimizationTest.cs diff --git a/adwords/tests/AdWords/v201705/RemarketingTest.cs b/tests/AdWords/v201705/RemarketingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/RemarketingTest.cs rename to tests/AdWords/v201705/RemarketingTest.cs diff --git a/adwords/tests/AdWords/v201705/ReportingTest.cs b/tests/AdWords/v201705/ReportingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/ReportingTest.cs rename to tests/AdWords/v201705/ReportingTest.cs diff --git a/adwords/tests/AdWords/v201705/ShoppingCampaignsTest.cs b/tests/AdWords/v201705/ShoppingCampaignsTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/ShoppingCampaignsTest.cs rename to tests/AdWords/v201705/ShoppingCampaignsTest.cs diff --git a/adwords/tests/AdWords/v201705/ShoppingTestUtils.cs b/tests/AdWords/v201705/ShoppingTestUtils.cs similarity index 100% rename from adwords/tests/AdWords/v201705/ShoppingTestUtils.cs rename to tests/AdWords/v201705/ShoppingTestUtils.cs diff --git a/adwords/tests/AdWords/v201705/TargetingTest.cs b/tests/AdWords/v201705/TargetingTest.cs similarity index 100% rename from adwords/tests/AdWords/v201705/TargetingTest.cs rename to tests/AdWords/v201705/TargetingTest.cs diff --git a/adwords/tests/AdWords/v201705/TestUtils.cs b/tests/AdWords/v201705/TestUtils.cs similarity index 100% rename from adwords/tests/AdWords/v201705/TestUtils.cs rename to tests/AdWords/v201705/TestUtils.cs diff --git a/adwords/tests/AdWords/v201705/VersionedExampleTestsBase.cs b/tests/AdWords/v201705/VersionedExampleTestsBase.cs similarity index 100% rename from adwords/tests/AdWords/v201705/VersionedExampleTestsBase.cs rename to tests/AdWords/v201705/VersionedExampleTestsBase.cs diff --git a/adwords/tests/AdWords/v201705/VersionedMockedExampleTestsBase.cs b/tests/AdWords/v201705/VersionedMockedExampleTestsBase.cs similarity index 100% rename from adwords/tests/AdWords/v201705/VersionedMockedExampleTestsBase.cs rename to tests/AdWords/v201705/VersionedMockedExampleTestsBase.cs diff --git a/adwords/tests/Common/Common.Tests.csproj b/tests/Common/Common.Tests.csproj similarity index 100% rename from adwords/tests/Common/Common.Tests.csproj rename to tests/Common/Common.Tests.csproj diff --git a/adwords/tests/Common/HttpMessage.cs b/tests/Common/HttpMessage.cs similarity index 100% rename from adwords/tests/Common/HttpMessage.cs rename to tests/Common/HttpMessage.cs diff --git a/adwords/tests/Common/Lib/AdsExceptionTests.cs b/tests/Common/Lib/AdsExceptionTests.cs similarity index 100% rename from adwords/tests/Common/Lib/AdsExceptionTests.cs rename to tests/Common/Lib/AdsExceptionTests.cs diff --git a/adwords/tests/Common/Lib/AdsOAuthExceptionTests.cs b/tests/Common/Lib/AdsOAuthExceptionTests.cs similarity index 100% rename from adwords/tests/Common/Lib/AdsOAuthExceptionTests.cs rename to tests/Common/Lib/AdsOAuthExceptionTests.cs diff --git a/adwords/tests/Common/Lib/AppConfigBaseTests.cs b/tests/Common/Lib/AppConfigBaseTests.cs similarity index 100% rename from adwords/tests/Common/Lib/AppConfigBaseTests.cs rename to tests/Common/Lib/AppConfigBaseTests.cs diff --git a/adwords/tests/Common/Lib/OAuth2JwtClaimsetTests.cs b/tests/Common/Lib/OAuth2JwtClaimsetTests.cs similarity index 100% rename from adwords/tests/Common/Lib/OAuth2JwtClaimsetTests.cs rename to tests/Common/Lib/OAuth2JwtClaimsetTests.cs diff --git a/adwords/tests/Common/Lib/OAuth2ProviderForApplicationsTests.cs b/tests/Common/Lib/OAuth2ProviderForApplicationsTests.cs similarity index 100% rename from adwords/tests/Common/Lib/OAuth2ProviderForApplicationsTests.cs rename to tests/Common/Lib/OAuth2ProviderForApplicationsTests.cs diff --git a/adwords/tests/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs b/tests/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs similarity index 100% rename from adwords/tests/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs rename to tests/Common/Lib/OAuth2ProviderForServiceAccountsTests.cs diff --git a/adwords/tests/Common/Lib/ServiceFactoryTests.cs b/tests/Common/Lib/ServiceFactoryTests.cs similarity index 100% rename from adwords/tests/Common/Lib/ServiceFactoryTests.cs rename to tests/Common/Lib/ServiceFactoryTests.cs diff --git a/adwords/tests/Common/Lib/ServiceSignatureTests.cs b/tests/Common/Lib/ServiceSignatureTests.cs similarity index 100% rename from adwords/tests/Common/Lib/ServiceSignatureTests.cs rename to tests/Common/Lib/ServiceSignatureTests.cs diff --git a/adwords/tests/Common/Logging/DefaultBodyFormatterTests.cs b/tests/Common/Logging/DefaultBodyFormatterTests.cs similarity index 100% rename from adwords/tests/Common/Logging/DefaultBodyFormatterTests.cs rename to tests/Common/Logging/DefaultBodyFormatterTests.cs diff --git a/adwords/tests/Common/Logging/JsonBodyFormatterTests.cs b/tests/Common/Logging/JsonBodyFormatterTests.cs similarity index 100% rename from adwords/tests/Common/Logging/JsonBodyFormatterTests.cs rename to tests/Common/Logging/JsonBodyFormatterTests.cs diff --git a/adwords/tests/Common/Logging/KeyValueMessageFormatterTests.cs b/tests/Common/Logging/KeyValueMessageFormatterTests.cs similarity index 100% rename from adwords/tests/Common/Logging/KeyValueMessageFormatterTests.cs rename to tests/Common/Logging/KeyValueMessageFormatterTests.cs diff --git a/adwords/tests/Common/Logging/SoapTraceFormatterTests.cs b/tests/Common/Logging/SoapTraceFormatterTests.cs similarity index 100% rename from adwords/tests/Common/Logging/SoapTraceFormatterTests.cs rename to tests/Common/Logging/SoapTraceFormatterTests.cs diff --git a/adwords/tests/Common/Logging/TraceHelperTests.cs b/tests/Common/Logging/TraceHelperTests.cs similarity index 100% rename from adwords/tests/Common/Logging/TraceHelperTests.cs rename to tests/Common/Logging/TraceHelperTests.cs diff --git a/adwords/tests/Common/Logging/TraceListenerTests.cs b/tests/Common/Logging/TraceListenerTests.cs similarity index 100% rename from adwords/tests/Common/Logging/TraceListenerTests.cs rename to tests/Common/Logging/TraceListenerTests.cs diff --git a/adwords/tests/Common/Logging/UrlEncodedBodyFormatterTests.cs b/tests/Common/Logging/UrlEncodedBodyFormatterTests.cs similarity index 100% rename from adwords/tests/Common/Logging/UrlEncodedBodyFormatterTests.cs rename to tests/Common/Logging/UrlEncodedBodyFormatterTests.cs diff --git a/adwords/tests/Common/MockWebRequest.cs b/tests/Common/MockWebRequest.cs similarity index 100% rename from adwords/tests/Common/MockWebRequest.cs rename to tests/Common/MockWebRequest.cs diff --git a/adwords/tests/Common/MockWebResponse.cs b/tests/Common/MockWebResponse.cs similarity index 100% rename from adwords/tests/Common/MockWebResponse.cs rename to tests/Common/MockWebResponse.cs diff --git a/adwords/tests/Common/Mocks/MockAdsClient.cs b/tests/Common/Mocks/MockAdsClient.cs similarity index 100% rename from adwords/tests/Common/Mocks/MockAdsClient.cs rename to tests/Common/Mocks/MockAdsClient.cs diff --git a/adwords/tests/Common/Mocks/MockAdsException.cs b/tests/Common/Mocks/MockAdsException.cs similarity index 100% rename from adwords/tests/Common/Mocks/MockAdsException.cs rename to tests/Common/Mocks/MockAdsException.cs diff --git a/adwords/tests/Common/Mocks/MockAdsUser.cs b/tests/Common/Mocks/MockAdsUser.cs similarity index 100% rename from adwords/tests/Common/Mocks/MockAdsUser.cs rename to tests/Common/Mocks/MockAdsUser.cs diff --git a/adwords/tests/Common/Mocks/MockAppConfig.cs b/tests/Common/Mocks/MockAppConfig.cs similarity index 100% rename from adwords/tests/Common/Mocks/MockAppConfig.cs rename to tests/Common/Mocks/MockAppConfig.cs diff --git a/adwords/tests/Common/Mocks/MockDateTimeProvider.cs b/tests/Common/Mocks/MockDateTimeProvider.cs similarity index 100% rename from adwords/tests/Common/Mocks/MockDateTimeProvider.cs rename to tests/Common/Mocks/MockDateTimeProvider.cs diff --git a/adwords/tests/Common/Mocks/MockServiceFactory.cs b/tests/Common/Mocks/MockServiceFactory.cs similarity index 100% rename from adwords/tests/Common/Mocks/MockServiceFactory.cs rename to tests/Common/Mocks/MockServiceFactory.cs diff --git a/adwords/tests/Common/Mocks/MockServiceSignature.cs b/tests/Common/Mocks/MockServiceSignature.cs similarity index 100% rename from adwords/tests/Common/Mocks/MockServiceSignature.cs rename to tests/Common/Mocks/MockServiceSignature.cs diff --git a/adwords/tests/Common/Mocks/MockTraceListener.cs b/tests/Common/Mocks/MockTraceListener.cs similarity index 100% rename from adwords/tests/Common/Mocks/MockTraceListener.cs rename to tests/Common/Mocks/MockTraceListener.cs diff --git a/adwords/tests/Common/OAuth2RequestInterceptor.cs b/tests/Common/OAuth2RequestInterceptor.cs similarity index 100% rename from adwords/tests/Common/OAuth2RequestInterceptor.cs rename to tests/Common/OAuth2RequestInterceptor.cs diff --git a/adwords/tests/Common/Resources.Designer.cs b/tests/Common/Resources.Designer.cs similarity index 100% rename from adwords/tests/Common/Resources.Designer.cs rename to tests/Common/Resources.Designer.cs diff --git a/adwords/tests/Common/Resources.resx b/tests/Common/Resources.resx similarity index 100% rename from adwords/tests/Common/Resources.resx rename to tests/Common/Resources.resx diff --git a/adwords/tests/Common/Resources/certificate.p12 b/tests/Common/Resources/certificate.p12 similarity index 100% rename from adwords/tests/Common/Resources/certificate.p12 rename to tests/Common/Resources/certificate.p12 diff --git a/adwords/tests/Common/Resources/secret.json b/tests/Common/Resources/secret.json similarity index 100% rename from adwords/tests/Common/Resources/secret.json rename to tests/Common/Resources/secret.json diff --git a/adwords/tests/Common/Resources/utf8bom.xml b/tests/Common/Resources/utf8bom.xml similarity index 100% rename from adwords/tests/Common/Resources/utf8bom.xml rename to tests/Common/Resources/utf8bom.xml diff --git a/adwords/tests/Common/StubIntegrityTestHelper.cs b/tests/Common/StubIntegrityTestHelper.cs similarity index 100% rename from adwords/tests/Common/StubIntegrityTestHelper.cs rename to tests/Common/StubIntegrityTestHelper.cs diff --git a/adwords/tests/Common/TestUtils.cs b/tests/Common/TestUtils.cs similarity index 100% rename from adwords/tests/Common/TestUtils.cs rename to tests/Common/TestUtils.cs diff --git a/adwords/tests/Common/Util/CollectionUtilitiesTest.cs b/tests/Common/Util/CollectionUtilitiesTest.cs similarity index 100% rename from adwords/tests/Common/Util/CollectionUtilitiesTest.cs rename to tests/Common/Util/CollectionUtilitiesTest.cs diff --git a/adwords/tests/Common/Util/CsvFileTests.cs b/tests/Common/Util/CsvFileTests.cs similarity index 100% rename from adwords/tests/Common/Util/CsvFileTests.cs rename to tests/Common/Util/CsvFileTests.cs diff --git a/adwords/tests/Common/Util/DeprecationUtilitiesTest.cs b/tests/Common/Util/DeprecationUtilitiesTest.cs similarity index 100% rename from adwords/tests/Common/Util/DeprecationUtilitiesTest.cs rename to tests/Common/Util/DeprecationUtilitiesTest.cs diff --git a/adwords/tests/Common/Util/MediaUtilitiesTests.cs b/tests/Common/Util/MediaUtilitiesTests.cs similarity index 100% rename from adwords/tests/Common/Util/MediaUtilitiesTests.cs rename to tests/Common/Util/MediaUtilitiesTests.cs diff --git a/adwords/tests/Common/Util/Reports/ReportResponseTests.cs b/tests/Common/Util/Reports/ReportResponseTests.cs similarity index 100% rename from adwords/tests/Common/Util/Reports/ReportResponseTests.cs rename to tests/Common/Util/Reports/ReportResponseTests.cs diff --git a/adwords/tests/Common/Util/TemporaryIdGeneratorTests.cs b/tests/Common/Util/TemporaryIdGeneratorTests.cs similarity index 100% rename from adwords/tests/Common/Util/TemporaryIdGeneratorTests.cs rename to tests/Common/Util/TemporaryIdGeneratorTests.cs diff --git a/adwords/tests/Common/Util/TraceUtilitiesTest.cs b/tests/Common/Util/TraceUtilitiesTest.cs similarity index 100% rename from adwords/tests/Common/Util/TraceUtilitiesTest.cs rename to tests/Common/Util/TraceUtilitiesTest.cs diff --git a/adwords/tests/Common/Util/XmlUtilitiesTest.cs b/tests/Common/Util/XmlUtilitiesTest.cs similarity index 100% rename from adwords/tests/Common/Util/XmlUtilitiesTest.cs rename to tests/Common/Util/XmlUtilitiesTest.cs diff --git a/adwords/tests/Common/WebRequestInterceptor.cs b/tests/Common/WebRequestInterceptor.cs similarity index 100% rename from adwords/tests/Common/WebRequestInterceptor.cs rename to tests/Common/WebRequestInterceptor.cs diff --git a/dfp/tests/Dfp/App.config b/tests/Dfp/App.config similarity index 100% rename from dfp/tests/Dfp/App.config rename to tests/Dfp/App.config diff --git a/dfp/tests/Dfp/BaseTests.cs b/tests/Dfp/BaseTests.cs similarity index 100% rename from dfp/tests/Dfp/BaseTests.cs rename to tests/Dfp/BaseTests.cs diff --git a/dfp/tests/Dfp/Dfp.Tests.csproj b/tests/Dfp/Dfp.Tests.csproj similarity index 100% rename from dfp/tests/Dfp/Dfp.Tests.csproj rename to tests/Dfp/Dfp.Tests.csproj diff --git a/dfp/tests/Dfp/EnumIntegrityTests.cs b/tests/Dfp/EnumIntegrityTests.cs similarity index 100% rename from dfp/tests/Dfp/EnumIntegrityTests.cs rename to tests/Dfp/EnumIntegrityTests.cs diff --git a/dfp/tests/Dfp/Properties/AssemblyInfo.cs b/tests/Dfp/Properties/AssemblyInfo.cs similarity index 100% rename from dfp/tests/Dfp/Properties/AssemblyInfo.cs rename to tests/Dfp/Properties/AssemblyInfo.cs diff --git a/dfp/tests/Dfp/Properties/Properties.cs b/tests/Dfp/Properties/Properties.cs similarity index 100% rename from dfp/tests/Dfp/Properties/Properties.cs rename to tests/Dfp/Properties/Properties.cs diff --git a/dfp/tests/Dfp/ServiceCreationTests.cs b/tests/Dfp/ServiceCreationTests.cs similarity index 100% rename from dfp/tests/Dfp/ServiceCreationTests.cs rename to tests/Dfp/ServiceCreationTests.cs diff --git a/dfp/tests/Dfp/v201608/DateTimeUtilitiesTests.cs b/tests/Dfp/v201608/DateTimeUtilitiesTests.cs similarity index 100% rename from dfp/tests/Dfp/v201608/DateTimeUtilitiesTests.cs rename to tests/Dfp/v201608/DateTimeUtilitiesTests.cs diff --git a/dfp/tests/Dfp/v201608/PqlUtilitiesTests.cs b/tests/Dfp/v201608/PqlUtilitiesTests.cs similarity index 100% rename from dfp/tests/Dfp/v201608/PqlUtilitiesTests.cs rename to tests/Dfp/v201608/PqlUtilitiesTests.cs diff --git a/dfp/tests/Dfp/v201608/StatementBuilderTests.cs b/tests/Dfp/v201608/StatementBuilderTests.cs similarity index 100% rename from dfp/tests/Dfp/v201608/StatementBuilderTests.cs rename to tests/Dfp/v201608/StatementBuilderTests.cs diff --git a/dfp/tests/Dfp/v201611/DateTimeUtilitiesTests.cs b/tests/Dfp/v201611/DateTimeUtilitiesTests.cs similarity index 100% rename from dfp/tests/Dfp/v201611/DateTimeUtilitiesTests.cs rename to tests/Dfp/v201611/DateTimeUtilitiesTests.cs diff --git a/dfp/tests/Dfp/v201611/PqlUtilitiesTests.cs b/tests/Dfp/v201611/PqlUtilitiesTests.cs similarity index 100% rename from dfp/tests/Dfp/v201611/PqlUtilitiesTests.cs rename to tests/Dfp/v201611/PqlUtilitiesTests.cs diff --git a/dfp/tests/Dfp/v201611/StatementBuilderTests.cs b/tests/Dfp/v201611/StatementBuilderTests.cs similarity index 100% rename from dfp/tests/Dfp/v201611/StatementBuilderTests.cs rename to tests/Dfp/v201611/StatementBuilderTests.cs diff --git a/dfp/tests/Dfp/v201702/DateTimeUtilitiesTests.cs b/tests/Dfp/v201702/DateTimeUtilitiesTests.cs similarity index 100% rename from dfp/tests/Dfp/v201702/DateTimeUtilitiesTests.cs rename to tests/Dfp/v201702/DateTimeUtilitiesTests.cs diff --git a/dfp/tests/Dfp/v201702/PqlUtilitiesTests.cs b/tests/Dfp/v201702/PqlUtilitiesTests.cs similarity index 100% rename from dfp/tests/Dfp/v201702/PqlUtilitiesTests.cs rename to tests/Dfp/v201702/PqlUtilitiesTests.cs diff --git a/dfp/tests/Dfp/v201702/StatementBuilderTests.cs b/tests/Dfp/v201702/StatementBuilderTests.cs similarity index 100% rename from dfp/tests/Dfp/v201702/StatementBuilderTests.cs rename to tests/Dfp/v201702/StatementBuilderTests.cs diff --git a/dfp/tests/Dfp/v201705/DateTimeUtilitiesTests.cs b/tests/Dfp/v201705/DateTimeUtilitiesTests.cs similarity index 100% rename from dfp/tests/Dfp/v201705/DateTimeUtilitiesTests.cs rename to tests/Dfp/v201705/DateTimeUtilitiesTests.cs diff --git a/dfp/tests/Dfp/v201705/PqlUtilitiesTests.cs b/tests/Dfp/v201705/PqlUtilitiesTests.cs similarity index 100% rename from dfp/tests/Dfp/v201705/PqlUtilitiesTests.cs rename to tests/Dfp/v201705/PqlUtilitiesTests.cs diff --git a/dfp/tests/Dfp/v201705/StatementBuilderTests.cs b/tests/Dfp/v201705/StatementBuilderTests.cs similarity index 100% rename from dfp/tests/Dfp/v201705/StatementBuilderTests.cs rename to tests/Dfp/v201705/StatementBuilderTests.cs diff --git a/adwords/utilities/OAuthTokenGenerator/LocalWebServer.cs b/utilities/OAuthTokenGenerator/LocalWebServer.cs similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/LocalWebServer.cs rename to utilities/OAuthTokenGenerator/LocalWebServer.cs diff --git a/adwords/utilities/OAuthTokenGenerator/MainForm.Designer.cs b/utilities/OAuthTokenGenerator/MainForm.Designer.cs similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/MainForm.Designer.cs rename to utilities/OAuthTokenGenerator/MainForm.Designer.cs diff --git a/adwords/utilities/OAuthTokenGenerator/MainForm.cs b/utilities/OAuthTokenGenerator/MainForm.cs similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/MainForm.cs rename to utilities/OAuthTokenGenerator/MainForm.cs diff --git a/adwords/utilities/OAuthTokenGenerator/MainForm.resx b/utilities/OAuthTokenGenerator/MainForm.resx similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/MainForm.resx rename to utilities/OAuthTokenGenerator/MainForm.resx diff --git a/adwords/utilities/OAuthTokenGenerator/OAuthTokenGenerator.csproj b/utilities/OAuthTokenGenerator/OAuthTokenGenerator.csproj similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/OAuthTokenGenerator.csproj rename to utilities/OAuthTokenGenerator/OAuthTokenGenerator.csproj diff --git a/adwords/utilities/OAuthTokenGenerator/Program.cs b/utilities/OAuthTokenGenerator/Program.cs similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/Program.cs rename to utilities/OAuthTokenGenerator/Program.cs diff --git a/adwords/utilities/OAuthTokenGenerator/Properties/AssemblyInfo.cs b/utilities/OAuthTokenGenerator/Properties/AssemblyInfo.cs similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/Properties/AssemblyInfo.cs rename to utilities/OAuthTokenGenerator/Properties/AssemblyInfo.cs diff --git a/adwords/utilities/OAuthTokenGenerator/Properties/Properties.cs b/utilities/OAuthTokenGenerator/Properties/Properties.cs similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/Properties/Properties.cs rename to utilities/OAuthTokenGenerator/Properties/Properties.cs diff --git a/adwords/utilities/OAuthTokenGenerator/ResultDialog.Designer.cs b/utilities/OAuthTokenGenerator/ResultDialog.Designer.cs similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/ResultDialog.Designer.cs rename to utilities/OAuthTokenGenerator/ResultDialog.Designer.cs diff --git a/adwords/utilities/OAuthTokenGenerator/ResultDialog.cs b/utilities/OAuthTokenGenerator/ResultDialog.cs similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/ResultDialog.cs rename to utilities/OAuthTokenGenerator/ResultDialog.cs diff --git a/adwords/utilities/OAuthTokenGenerator/ResultDialog.resx b/utilities/OAuthTokenGenerator/ResultDialog.resx similarity index 100% rename from adwords/utilities/OAuthTokenGenerator/ResultDialog.resx rename to utilities/OAuthTokenGenerator/ResultDialog.resx

&le+m9`XE(1-@QxYrj~z zJs8{jWxqJNKe)u*gxzmB&@VwwLkl4V{QD(A9u2n3OOV%i`?2!u`vv{wnGm;+SATgE z#IZm50sZCgeRz6wUR zDVLMSkv~Aw_hY790k-egWy;-r>)NwAE>q5MI6q*Rd>rk5g_ZYFT$X%>{3dfdDNDXY zexH0DY?q%U=lIo?zk}t^cQ`*FNB$B`?}HpJSCjeocROjgTm!bt8!kTpS zZeBkA{>l#+A?JXrUB_5^4#tg?*MV`oe_-C>@a@Q4c|WG7`*ow_8ZefBI&PF4=I<>3 zNqH$4%d3qWEq{S_-(mIr88=SeNA_vYkHOCKM!o5 zFHgz09G>58y!^=F8Qmtz;epUTp(CqLh|iOs0++a>n5%nDk|&dgkY|GJ`X|Z1g0cRP z_(}3Dht2rOazYRaDlLs__xZC|W{Qo2mA~z#vlb;}uCMS`fCO^&G zA%2GZEV+=m8}o}`yS+2yVlvLR&X89$#Qx*@wHfj)Ft#^acu{@`#{MP8&yoX!d3yBF z_&IVfuzmi#B)_dLN-cejm;D4q@NF@dfgy z`nKx<1#%4;*FP7?r^)!f&I0)gc@cYFHm`Ake24rl*{2b2uigIwxd#~A8_MdB1(ypm zS$n3l_Ki1q`f{O=xgfq+t~9Z~Z!^Cfzd&|bb$&g5p&aD!8}Tp8-NEI;dX|1ge5oAX z7|Z*LxoyMOnb%^ut;55+ERkP#cys(xc|92G-xmL-d>@SCQ`Kad+^#7v->!eT z+yz|XKF_Z2U&Jq$V=?aU-GTppUM|lf%goiimdoqOZJ6^~FPD#kvA)ABe^@9lAM2as z^Ojr!w)_9K{D#BR8my4lf~);sh4NR*o5*XJkHxQ)x1#BKv{F`@@$&Ke>6)}sZV9&6 zv%DjBBIEt}cjSIxtiQ(R9eJ3;_kvf+lfl)re&#)SE_oeWPZLmYjr=khpKn|vuX5xM z71qd~g6;J}Yvlc4d;V*!d>m}gkFAr>lX1V>_vKo!{r&j9{5RM>pWl}s{7?K~3*P^w zLP-IC-}?LVDYW}_=99t)@^y+YXTB2uf!w?$rVnQGT_20<$UVx_Ky-BVGWBpxOc{d#HCw?URJXY79-U%PegTU4Pxc~5GITuak zZI;J_?fz|+zXsd=+brJ#(=H=u0Q{eeT9_H}Fz%BA*aJ7GrE_{A?t2~1o z$Lt%lRW3kN{afWjV7tDpa(J7%_76z-Or8O*_Q(BWx5)))%D+vn1>5Yu!Ud7@?%wcG%f0z6gxLio= z>SFte?~+%L)5&YWg+g8_pa0n<3+?O1uf}JWd<(o-2=2!2CnS6!H+`JP7Yi2inuM?9 zBycsYf7l~eg4z2{UghQOk;5W*`a)qR`4)K}Ikf}E+pzL@`Z?fop)>O?=6U2Oaw$2L zyoB=Kq4H|Te=yhh?2#{%hw=1YU&{+RVtvDzHzw?rmypLZPjKy(kCLZC`n~dL@+^o~ z$(PCVnKvg?$wxb3c`KMhg>U6^UC^7!l~17elZ9UBBjg9<^W?JL7{5VY&^)Wxlv&cB#ctoCq zru9I_0-`96ePLAg7y+rSCKQCv37qh*0`Te}}@=S1%u#LH1{|j;eBO zUykEmEF5AE>|ZPA#G{Whi~WC--yXz)OV?@SpMl@?+p@vYLYFBboL7f5~IOONAte|1Gbk z_)zc-`K456dvD6~!FYT^g`4v0;HAP$mcD8KoANSpDRaliZpq!#cz!$m9XS%bR9Ma8 z;r;K(H5ojP?$H0Pe9GZo{qM_<59V<^A4|JDlzW4*ycyjd$%DW+p7UISGREN=AD40@ z6WR~&?|YzmDObot&a?L^_4iU9lD}r{*&ui+K|?S-k3ZAiOPNBhfw;F)K*sqHZ)G)^ z-w&wq@m7Wo#s2)t(kJ)#QO=S7Vb1FBtBe_jasQs|`@Mgl@_?*?>npigJdXXH-M^vo z8@SrlvYcPfJ<0=eFXkp89%W`WPhagC3~^B@CO^$w<0C5Lb1+`a+%iN`rjl1ddRcjv z{26n*5LuZ;J`DL4WjFaU^9Yx!2*Y`KRWAJ^TmKWGDhXg5|FZtNG7nts@5k=fOmH<; zmY`idSpTeu#)|IpT6sX`^BsG_+bFxAA2q2d3HdCXlMF7oQ63`5iXldei0xLml-^7m}mRr%GCex9p`@{hws zUQa0QF}%K|g83nPpK$-)N;`))>XAxMhqvg_N&*<~@6B_?C_&?}|M)(sSf$%j(0;l< z*H1}uczsAeWvIhH_m5LHfUD_#YJ##GP4{;blqxdb-%U^+PT=KNyZHJ+_P$poU?TcC zc0Xp9SEAC1jQg(*P-4iLEPgO7Nl7K+`%F`m%iuym>do%Qgk>n>pT_>+{M``cXdaeN z>qV4v;6ix*e!JH&C3O;y7YY{3Z?wo#!k$65V%{DyLU|EfF0^Bw7Cus0f~NmZpH$uh zR zrY!xRcm=pn;P;w#WT9?Zo4<9eV{CF2D&t_Lbp zw!VlCXXDkwdx`Qhxpg)7Qbm}B@uyh(8v89%I+LGeZsGTqG8}9lkCn<|uzkE%D%D`S zzblpRY(sxnDm7^8?@Hw;8T-3ZX*-+Of60aYU8SrdV}I8u?}F|5mo>^cGS0uORf1l^ z_T&7^dSy%j`UiGC^!02~f(p?;F}o5!QudKgLwvJxjeH(lq3CllJ%2yilYXBl`Cz;M zpDOFY_WaJL%DN(+-tPZr$|f}JfBBgr%!4@Xe_5$4D8cgQu=%3xAv=}t$xE3>`R-EA zfy;$H^Z0)EUnA#X`qEE}>E4er5Ag zXL}DRGvDC0+j~fr}a!nlx|>q ze2yr6!S?YuqQs%;`HUkU?UpJ!^H zcv86paeIB!8Raq={~tT6T*3VGeR@H;@jt%r@YC)KiuYUCzMX8p$uh5Bl_2sr%-g+c z6%|}a>nkoQk!XSMPwDo*sC0gt=Pv|%{4XmGw*)V2RTkDuDx;cl({)l{?__b&}pZ#v@dc>>k{9KPsNU-hi5E3YW9f!Yde z@8{W2jR4#Gc{WsY$heLez%qu>S#{^YN2Zh1`1*`>(}IQrkE@&!wu}$&K0g9O$R1Tgk>B?EYDzrjA(8 z%d?-a*3_wB{Qswj#mgv;?J?C_GPcK5hi>5c3x&R{{0Xims`+8vc;yE)QRk!GGg&-5 zu&MewnLqED*SM+rrX6SV31)+)>LIXwzrU$^6pZ&bOB0)_wGJ;$Y^HYJ$m_%Q<_9!a z%Qiv%v|oRix|S@k^1}ne)JOx;Sx`J6Cy7a8Ys!qh4<&gX=whtM>i6sCrL z1oa6xpA@F{Lc4K4!!R`#Z1*QjO#)+kcPn9PHrRe&P78ICBfc`Rg*uDk_OwMJ zk6Wrs(e!?tmTCnU$7@YuOV#IN-ab6P@&j6_d0@PLkM9+(PItJp%VTOO*lurY^%so0 z`TDmFLTmLh7|Z`Kv9;Q3GxQ%mzn>(wQOg`Qg4?NYIh-xDSGR)g_B^hpSK#sbg`FSG z0wdHc@>S+UIYNCBE!<;{b494L$n_)n{<0D3Ww71e2sP;wUY`BDc!YWZjP+#;5$Ydc z`}?_r8nneZJ{{EO!8kqzo{s7QhtDQ0qqicR+7-EvAR#SAReswF+$47o~Ri4C~v<`lk_tIK)l*%8@9(2 z#m75A?Mb$n6I}^v47oM)+kpvc64-7}g1Q!r{qHm&LEY+b?*WOb?{+93+B2{10JV|B zu>%IGNnm??Qq{E>cjI`Zshh|+9%<@U@-Wt(>RxH;F0kF6G*zmstFO!}O>OLO+JJPm z0~p&obig1r(%~lu3|1F8(oYzWsaAsR_GPKfc0l>?K9lDMWUH;w?pIiQxI0pO74r=L zZ1o9>V}G*MXo~aw$F2uttBDl%f%)-lHJ##{xAXHoTg{?4_BUG{1Gf8{tyY7veW60O zdKg?T_^|oDd8|E`(e(fSaCPN8f=9DZlOIJF%b z=A%CtFkX#C3+LH*j&O}vSA*^Tk5{jP@px9U^ub^7^6ld_LCpo@=l`n#6V(^d?sn1q z`!!E}l^n&~PRdi4f$j41)Yf0|^6bxBo>~QQ`}3Bkc7{0Ce|$imx&Um~KS@p4UDw~! z1D;XGqTRD&T*8$BQ`Jf21O^!}=N|O;uAJmXfBa3&7al zY$0Dg=WttLy6W>a&yU}i^IXrVDwsVl$?9Y44b(Q|Z^)70Lg5s1lcX8y7>v8GGRL`| zS6A+Z{<;4puO|n^V*Dhykk+d{uU-b*^W)E}cft1j_zP;YDqfzw|K*G7<6!&y=S8&} z*dE^()m$)+N6VyH>Si$Ze{aHU^-G5z2EL>o1>^f*i+u~#Q)E70>>E_5)}m>?vrrA* z2mOQdwNp}|+SK8mNpsZ%u-%>_^#B;#6P;A79(On?sYJa4u6B)N<1;8}zUp7i%eRm3 ze3d=$#fR_q{Zq9 zhf9;*P+NQh>D_~V7TEX6Qnej<47oelu5YQj28`t`PFkvNb$DgcGS%mxv;O63p2KUC z-ck$Dv|iYWTNx zHK?Fz2wMW ziR#=wN7OlbpGG@^N;ktYJ%<0+XreJFh1|OKWV+%9lTUH&FVjr zv`Jk7E*GvapG^8l4f?LGym_vVRmtJq%4W5-!;9)ysGS`CNBTsK0$0=Le~a25Z2vyr zqE5v0w4d%4H6L6k+~M{6Y*9~v?e=d`OOMyJCsg=UodUM6$DgW8{wKb|;cS+Eox>^K zTh+~AHs9CJCH$SVP2EN2`)}S)+OD1=^ZhyRCsnEsz~#a#EWOvj9ct+bXL~+ZmpEMG z^SQdp;gi8T)lClH3;sg=7hFyA-@DaEWSsxrt-5~Z<=gK=+O7JKasGR^>L%m-_ii!)OcyN*6j&liTyuMWrlK*4(E6;cxQZJMLU_R*eojU#$ z&tD|m0e`PvzJQiX1mU9B4{F)3=m6$3UPsk8YtcHCe@wjw#?ND@a9phd+vm%1)$1Zp zkMWy*kE<%!{{Q`i8bQYKIHBf}@&EUe>MLOT_rXbZF~(tiv}fQ+^(`{4hd!;c%GjU1 z9=guBp7@L%r}fb1)OR8Oc~=|OpJ<oC-&-{P!`nbOMyjp>AS|5Gh z&QI&3>x}D->pYQN52IXlE+v0TL z;6?Qhhv&I2sgE44@%c>^FY)71E{tONdknm+=7URUJ>TzYDOz}z#p7JRtJlaye0&D} zu4=!*@pOOsCz}sv4nqrk|ITFQ{+A(6@1MD%W`gm09x7Z>bHVocaYbEr3){1cmH)=T zE2{Yqx4j!Gi!ITZhnrLPFOuC68@2mh_sk}ra9sNuJ72i{dLkRN05%7Oo?HyqwK@R90u2g~R29|wAAro(3j`eM%of^xsby0i^(CH_kTQY ze_lk5f&Eq2QH!)45klO-(>%B!a5TNF(M$T0h-P>+bNzm@sWU8RsWjX?$aMP6;RS>zbjzLezl+7j{*@Z;JhGOn+V&`ywXeRT(|X+3QJB$hrixq}wz zaBgxZtW#NfW#Be4DXkJJMFczO8$(yHW0%>e<1>^a4EqQ?UzQbEwN!mWN5Z0f)4cFy5P$tl{u z4hN>BYia{*FHf(hWNIDB5zLzcvbA2|LLrX1O-hb7J{Z&UY+kEfLRa?~>;*znJp8_958*e7^91*P8__z9G2I<=_{!Es&nQZv{L{`;3h7*;?iQ zSKb_LHyF>Ky^qh)dWG=z+s{80XbEI|{;5E_PR8e-3bh+#eEz9WdqBqLpXO@G9xM-^ ze=5?3kn#DaB5e*CpMNUW-Xr7lPxG`IaFy#@)}Q$)^R&C$MByN36Yveb;MO$n^%GZ;*q?55V^Nym&g-wH_1PP=Fa!G| zvGjLSHfRID*uMInP1-25(4NIdxIWeVx#mq@yyFEL!X_z10ZxELHxmHGTY|l<@C+3Itv`O8m9dfu!>KED> zG|eaO)-F^2H(7rsxpr#}EZ%?`v%!7@zNW+Fh+>qG^5h zel3^cxITNoww{dZv%k@ffw8<$;h=Wf;WxV;)B+pBctU^HhaA#Ou>Cy5ciI#(KA-lz zR!PR^(`vM~*idJEC$&nnFo-?BH!|duwi|3e z&vHu3Z^qNx&rh7uUa<|&i=5G3L(}s-XS8Kxd_Loh<{bw4>3NY0S{ra7ySL8%pYXe& zjU^W|xA3dg7E*ft`!U?}o3@OM&xc*syjs+?KUBD^1wY1Zf4^VWCbtF)=UI6}Q!i`t z!S?uH(N=)%{$0`H+d%v1d6=tOvTf+!RV@uo{ky7Vkg`-qY@o`FQlM_pfHQ=kcZR{_D(! zkF=p+dq3d+w2^4q5BNWAG}!L%e_DaV<5K_A!XM}5+4}_x`XVy!7wo0)1{Vsa+4Z!A zpSNBMu7>MtV?STLID+S|rsr+kdPoOu_I~yK{P{7r9!CC|Jx{jLFFo$UiAn)^i>CC#9PDOOE`LQk&`TIPyQ}+lE?l2KOm7xbH(sGamfqUo@4IH{J;2qjrfj}!f7fh1$`S7sm7}LQJR^0ap6l>S zsiX8#hZm%d(cQ7UzAB+FJ079JI6W3z;*Mp{XU4h4>1pKQ%p;gbplSb?ar!ulKf~e^ zSo|3>U(e6;PbW`(9zBclC?0Sl(3qfg^s=XPQ2~U)}h=llrVa11<3Vsoqb`*9*Y*`u%*p3S2Hs zJ|GAmrB2s>b>x4~Gef`TaCDdF_5aZB4deNE%+ediL4EE)aK6vdn}YH8;6zu&1q&!RZrPi0?ffj)-fi{bZ8 zfqn#R_pd;|0AA`YOJ=`EQw#M!$ZMF7G2aE--w$*3xK!Rgyr1xE>Rdg;VM#64OThO1 zjCp#6!}$U8^vHDRAN2R7ZY6q(!;`x$&__7@XX?v(p2K%jU)4Jgs>?sWTbUl?@QiMY z^mK>4)0XJD4mU`9Q-A1iw(yo7oKaVvmiD$D=J4teho-I4V;pXs_MSe-;f`tR z^fBNH68&&PUuGGAZC<2}jkD4yVm zKhg4IeT*X>-Ey;D0A}yQW9buHR_K?(_I%A2-Deoqf9nCe|ChE!-|BE?+E)EQ7LS(; z{aOCuX`kutY;-oW9K2o6C68wwomQ!DB2S0-4m~J`r!N#1GEYqVT>l+h0{4HOOZ!s4 z$MKAPWx8Bk9O~70uL5IzpQIhpBS+Wu zzs&1LeUro4!cqM!+C7z(H{AP}{ug;JbDZm#?iz#rEoYvEp-o z^3Z3~PU=sBvHsuFPU};_IKJ7!8GRo3l55dR{QK;zz6fmBcUE8J$R8@4)z^cU3g=k+ zuBV;VFZ_S;bNW@VeSJNrZ=6uqzo5s?>8Bjd5BOE@I}yi|_5;(C$h04rK8(!w_hS2h z=~KXV`)c*C!Pwv1X|;Nd!$SHcz1h=s_4}p&rYC^ykrydKouMgMsnP6&Vl z?=SrT*lzFNx;hEUr}qcl&|9P3T?g^=@rK?DY`5ozJ|2wU&+}M(CfMGe{-$1w>1luZ zoBB=4kNex+(p}H+`l{)9^jmr`*q*PwrH=t)`x~eKqgR6M_TJWwDRtw~BK?lu8(i%_ zm9;lfzOVNq<9_t_^;AqREMW0Y>G$;m7^nI2`+DNky7Kn7y07Pf?fM?*yTI6ydtie4Kn2P31q*!=~}_G5>({M|v?BKQE!efBIsF)6@UcE70y6th{0A zf>8;!$6qjxg0Z}@EFS)BUHkI`T*elM3p`%NE{D%1dKr5p z7TB(@o{{<-FW>&XQqPFY=e9qO^^Bnq$M)o<*E32Tem33Lr~=#92e%PCqprPe1%IP8 z*gl^Ej6N8r=Y;}|1T=kL1sdaL^8AHD#b7@EfyQlcxv-acc6y+pJ`d&7^GQKQ_zRf+ zTNc0DJjfVI=Fcb1O|NgvLA!rs@!{UVMmfb-v+LIgSFrI8*gijljS8^+{81z07c%b8 z5n}v?`Qdt;9}r@QFY@|vd|poX7^A_}{*5yE^Vp)1hjy9F<>{hPiKg>MG-@6Bm$CTY zU>wgy^<~4H1^tEk+6szM495E2OIM967^m^n40AT5cbEF`=eIPY7;GPJ%_zk-y!CEw zSo$=u{do^FO2OE^tLZI_6%OA{Z)Nr#0wj zjCXiZpE#oojK^#8pm^gUxZ1xzt8ch>f)Q8@<@@I_FYl9Jc*v8OkHse#2AYm%g3$+z z@2`GwP=YZSyjVDYl3is7^*1Jgu|1)}0Asqt|40LjISvmIlZ*vmynd#&9cU~8+t;fU zBWxaTpMAYfH5k}mb-j(OeXk8lH6kF6=Vz#pW^@NHh5h|HH%v2zIvm?D-B{poQo{^m zE4k}@zJ741aoFL^hQo{#4(Bw?GVX)1f9HGV8153@KJo!dOkd zR>|i3nLi?L-NI&#{6`p{lfNPFM+;@E1>u4*!Z=1=4IXLKlKJx;bKJScriDPVCH?& zXrmZxkN0S!6l@=#(Z-5bd4BtOkCmA(h zw!b_pzd^=i<5U^1A8lq#Gs4Qb3k4nz&&W4+f$j32GpZc!p7ES<&f&<68AiQDJbwxN zo{Z0!X*5I&-t7Kae8%&JN^#t8;RT}^8K2jD!Dvgy_bI$!^Z?`W%*uGdNO5>f#w=ru z!_Q^RH6oWl{qTJ_`-z3dD2Eq6QEn82%Y}8Ue+x6-G9uonOaE5JDkI0?%8U<u3V&G21{jP>9W zfv?ZF{X~s%i;UN&8YAI7Y~Qo2{^8y~7&&Nxzc2Ypy&sHoWIP^6j6cyZo~eV67(r|5 z#&^izAB`Badl4&-z3|j?mjB7YCydo#{Ji&-P8!=B4i!!tdmWxS__T2Z zTn+m}v<*9BoFW&p{qj47oi&=SF?n3^6`KMI_qt(BBEQaj(&vUT-I4$3;2Xvwhffc_Wvr+4{C&i8 zd~X{SWQDnyxf0Cw4`F_p*=GZ9Keq4E;5$ZhG(8`1&u9y_&!2lnIvD56uMfU&OriKI zx%_Er-+v9wDGsj>X=r|frv3$+M=3wHC)n)w36w|k$suNrZRl@^ITB6%4Kee` zIG-G1zDmaa%H|<(p@997&D1T<{^;gKu-)Fq=ARB{3ysa&4ySlGF$+HB`R(+f=237t z%vXD5hMMA591q@~Wg*SXEokabb8`p9aX*;m<}Prd@HZR(9^TE(;?J;sKEwI^b_?@2 za5>EPk4$ZChHm5WaslVJ+nNbviKX|?eB4|BzU0E^8#|g|+p#^k|3W7-yb_JiGjuh7 zBI9^Cta??O`@|cymZkGs59t`}a2IgYEM*(p-Y3{cs}94P@+p zl)06R?Ts>nK6kb^+B`tU_VzPh*@_xPEI8Hl`GU8vP_PIpXbUjkCIwVnz`8>?*?r@pcFmpvUkK=rGkZ+cG3r**9 zj`^=`_8W1@C}-O ze!FLmG4sj%del90teNpWkK6xWj5BL$zyg1M;)}>}<|Q(Je&UPBr_4v-Lg6nq9(^;% zo7xXp{tfWcW@m7@!1wn#r$1xHlKK8V=kzIN2Bkm5>SyosHs_GP2S01Br}Y1@^1g`7 zH$Ndi1Wz|VC;PC?DdIApGpi^+zHfb|S$hQA!>=Eq!b~&!D7XE2nrV(f!{;f;ccytA zY`<^)1+)7xNKfxuf5F^H#_@j1{G5#MTYt&i2eyxYfqCzLEFS0OVLU0bz$^vZ&ubK# zi_!G_Org09Y(F1UXnOs`^Y8V-=VOY@2(bNpOtF~(wx5rgZ&r}8y$j8d6Fh$*9FHE} z3(YVx->+(;-z#Q&GJl`KM!(n0p5$)eax)feKaaA+d~~L+KSMK@n8sOdyFYK3;b^#? z1o^&UCXw-ce$z}L+q4V)#ep4 zzut{-tuyaBeA#!M+4LN=m!2P5Z$^Oe_>9b4Zx*86kFoPBLi^BMNbXE7ccc#$J~Wqu z@p?ER^FwntIg6z~?7P|Qbsp+-;rqikn`L18{oxhnX0ZMK@Cx%fc(KspxF8f{R+zOH zcz*nUv^4WmGw4_DLLr}(zan$HIg>n}d41*%a|3xJ^VZCrW+nLm^B0-B%=}u+f0p@R z=2zxcaFKAG`Do@IGxs92S7`pRAgngNHa`X9_|*99HNSQEbY_+Li^H{<)#krw_ZxHg z{N6XF_a$CliQ9W5dw*xWZ_Gfn;KTMuVgK)$&B55e8lP{>w%}?3*GC;RdtrL`eRt94 zJF}m|MS+LSF%GwA@x2-R8?O(`%MbX`>;*1ydv5UGqesnHGXK4r=sId9f$jUTN6ndF zy1$!w)GTrMcII*OGt3X|d6@Z=S>y14z@N>lVEcaVNi*p(_8;G0eag&0!+x8Iu2beX ziZ^HDb3NdcIR$LD=ajhuY~K$$Wv&I=*XvW}(BFCa*k0cur_4=YJYM+$r_GcrP(QS{ z{*W`~SceNd=gfSE)gkB2BDDKBYfrK71@jfOaE;lFx?nB=+wHqx-UVa*Erwh$lm6iK z+5P|3tN>$s+778Tk2&0H$Yt{$+C4beCG;Qihv~YC>;ISsz&M_>SbFm> z=Xl;WuYXeBC{>7~=N%bkFPz zajf6UVsWtDzx(E8FxDTI^{?6TF7yvR@5R24%pT->GTmO;q{RiHb-+gQ! zz8~J(3I^Ntds`>L_IP+(`CxlIysg>)I>*b~s{Nn%^oRd{d;z3)cY~KV~v(}>NeAcZ^Xkp?ZHb2o) zx59mJya&$|gekIa<&%d@V(US(bZa+xGBb}ist4)e^D}|DCz?K=h82T`{ory|k0Lv@w~VB{ks-c7jiE1Ghz!XmVEUaK}eTa zdVfs+GAnO?_ZC)nGJn7H`K%V!7&2eqd^M|;RSL%Q?@?B`bq3=we)$29Spfl19=JTP zwbc~u?#rIvDfVq^g_Dz*-wteRMS$(&-PXzh+vj^*D-VqI)yr;Y?Zo_0eo%IMs|NGC z-em0;vmdt_1@ijs@*cNLuwCBc))X+7XJkiMUtxOxZr}0!)H+!E$vatj+~1QAGS^c& zSSQf*`RQOa3*zrxs zV{dC>0~|kGzZGe%1Y`R{g-C0?!=thzt-cK*J+1$Zvf{xd?rYDm_PL_06teGR7n>i9 zvWAiyGkY3ETe;-+%taldtqJ5l%u%iw>p5~Fb5G`CawhX(-&m`Z{1ne07;C*jo(b`O z)=Kh1i1)MJC%?tKxJR7zF?lod`0O}qJGqK^xOcqu75OCdcCUEr0Qm;Q6Ra9?!znzT zVEs&P%RIu>-?~KZ&peO$7I_@=aPLIx0r_RfpJ>$!hU4r0nE9~p0INQEFLP1g080f| zyLSG@*GDB;LI_W9e;>2ePvC0U|DaRzfmTB@?thSMvBd1p-v6M^xc@_~ZT+C$G$Gr?}|Nfe21)DrSUf)B7iIxhspC_1T zJ%y&{37)o|r8u9jT9*B^Rp9Wu*?E@Pf|s{cz~>1jS)IY{CK|fbWO45Ib7p2)mq~4_U!-1-n+-?RJD))Yu|^N+aZx-xc8BA z&S8|KsDvUUl`>`~hM5sjrlKg5L(XTCkYmm{6!x7Kx-z3)Bd zQP1=Fetxg-@AaGc<9fZ<;ab;Pd)<5Qb*;mGHoB)0)W1LznSX)Ej2=RU{hHmi%;+PP zAzlnmQS(F3MN^TrXC)^|-r?a+k~6EKK6QT7H=*aF1A(*P`L(hA^U=-3ZDn~Mw|^me z37Ffnck~J{+Q01P-qA=kw?4bu_lcH47KNv)>+@1Hy}F9e61}9p{q0|hP9`1*+&4O( zxU97ISo?m_GsG{>7UJjjFGuUu!2IK6`rq5X675U8K(a{eA00vbq2vOIS{c(_$?P_zax_TTBPUyC-vc=%rZ4T(ddeTjdT z`pP8^jZVe%@V)l8TMv!S0p|I>7=kB?RW-l8>>^{JgWK6)oG+WXNh6QWHqy+C^=MOzc2 zJ(HrRC_jGx`1y?=FrG@o++LNpwGP`E(WkPV|(A2LzTz zQyQrJSz?iFe@m>0&LCbzEbhekk0d7qS4683?~y!6dpCL)@nPVV(U!ny-^SvrqKO`E znYcE(8kxS2z9G7i7|$2j5X~mODA%X$jN1_1Nvytio|L#Dx)+##-y5P=fN{P)HSzuE z?RP1A`S-ptngopYRBgR6+RwvvTW^j|L#FirA4TU={?}8~`@u)ioxrI7nZzy8QxuQ) z`>j#YP?d-J=ijh3nh2aNaDE{>I*J(QA3lywCRXzepH$cuE!qg}#r^A_M(f>;jPs{C z(Tn%E`gjsf|MnNrXk(RM&acb#9fEtK z?TDL7PSW;9PXK4rd24&4HSa@v@VvBdqR%4Jd2jopqlxkRX8WUyiShim{n4es$0K;& z+y3ZkVm$9{fAoD~JnwCPbPMJeIDYyzTBr$@kLO=}8!ZETT;Ta{-$o5$Jpb)r^d?~b zeH@C`^sprkN9QzE`uKiuI2vgNOuygnqSrIS{OEVl63Fy@j_;zc5aaLh`{+bsoNxL* zIu$sJzEARfwCICMKdxseSMfx&e@kRFA6l;Bspy$j$YXlT@3A^(qFdS^PmnD4&qu|> z$g?DG2%L+yCtd*jTl8t-rNHN-BZyZ4{~mpv_&wkY(S^jDfGG^#oq*nsQ>t%_M zJ_4ApPe?z6OxGt)|DGAHPn>>=(&Kz}oZhyb($Dwng8HMxczp`$iNN^%ob>pD`eI_U zkG#KCETktqj`hLs%M{VqK7p*}v&&VyUT@SM8LwY)y=XVZT%XeVI^ao>N2R{cTbI^9 zBz{`*7m|0xq%Wg~yQ}$w+dF&-v^!~ zj>`N$CEl!WBR(zpQeqW-5Ah$8i*%@=H}0wQPZHr5HDPwBqYox7E4fyO+w{f2V?_=HKHlg~y%8|?mxg*X5BI3mQ11(zEpUJS-TG1BEU`q6_Z!u^M=$ZL z(ueOC4|TX#FW(F58#yHPOMiu4fmqEa4vcH6S0l#t-c9ucV)U0c)teJfU!nHbHPs&` z{$1*8qBYgii6bwm^T?a(BalUT$w`uzQ+(?}YW||BzK$5b*U?npL5$z)XsVwf#`We+ z^&2zMeq3+fRKEvV;QG&|dRyY^vb_D}n(BR@gY@DaDt|Jt9DhjuG2B$&&_~5*i7t|# z?9fc#K^&6%OVT>ruNQq0CvH;z71He zpON{S=&ke-eNo>VlAr7FkiHjql9(^~CCLf>RQx3Iq2$*(Jghf(Suy|K9?_ct+N??N?QPjNjhjWxXvjoOhm~W$B5;YCg4h(JVa`nf7yL>CX_4mF?Li zn5Flj^y)kc#gm9<%Xp=41~8w0kfmD#-1a&adR4CijP|T+JwUGu%;^W~O+4{0wR%l| z#KXHg4AFZaN4CoHR@5A(zd-prq^SA&VfqMQ^hY1*FibxL%>L@(`u79f_V}U02)+Cu z;7G-Onz-CyoL+(WcF8;A#_83F@%!WB^aSEoGX9N{geVD`_C z)7uVK<)M8AlE&$4fw4Wd7~}O4uc>&pcY^*AFvb^6ny7!~;nGQy^zV>qJUUrF>4~pX zd$RtUhmE8+^g=`2`rn-NrfwleW}Q;|OQ!0TiKj^W?Lt%aTEuH*eEr%}^#;IPpQ-v~ zV60D#q^Wx0p>F-^B~8~8fw?|!>3e~(J`Iy*=)WOH_R8{VHJzZ z3&4E8TA=qF;nt@`(gJ-mFxO|HUUDSZ2jkb~g%;^mk!k<-61@(xSogAeek{=&0JHr| z^q#=jeh()t(YIiF(3e^89lhQtSO0+crFuJLIv-}a-WfTfevdojmg~EO5Y63`d8_vfKmUGNvre* zW4!uT>mz_s|0g%C(dT)1&rR#}_mLxEIltLOU$1W^J|f$%Qla&F4ltLuUccnYe_6)I zjaB90{V}uP`+5anv?o1jquvX6aHP~L>iND&?+?uSHtCB!=`)iy=^H%!a?%HSk#X+z zSlaYMy^MzkC4Hnf0OtO&Rqu=Ok^5wM-Ku2k1Bu&79-Wk}j{xTKv-SPJXz!ac{*;I3 zCT-L28t<0BuE}=2Coq@yslFNGBSWSBfpI(ZZNyU~S1-9k&jIH0cIcOYvApF;JM`8Q zyw~e9eIGDhueC`#^`jo%l(b8aOayx(d!_#ENuTRQiBC%IV|=cc0p{{P*PjB$^1hJi z`+E3b(r$e_=7;`xJZX=<$HQlmzSN6Oa_gU2@N2yzas>Ai?9;mvSMIOszfXUbxB+or zV76zUo&${Smr-h;p7OfVkM;$UztP74XBWskE982j{rY6${*ot1oS4}>uTW{d?TM6xROs`D5S#n(AV|oHG zx7RT}1>@oRWRyCl&!F`9{(W4ZPkdvRdOtp{FGCjfB(HzsxW37gzjpHX`e6@e7W_ds zrnv3VAo)kVriYs(pVIpQ^ZJXQ^g+ZkzE$t@Kj|Zhf0oy0SnZ$m$-r#?Px@yVPxk+$ z|3vB4_@GjupY;pKw7%kJJ@ZXyANby0&r(0@n~6ut`Ye0mXT9)LjDH%|U;M16607g` zRxkOpK8N@vioXDi^OX-K|E!zSRDR?~lTYjYi5Dly?|CNwqR%H*`;VVWKC3sI4&{OU zmN=^q0OtO5R-XWj*ZY~|U-hHF+1dhWZ|~%Ddd0V(JnBE^^yxw>SmMV|ud#~shAfBJkSMU4HB4dC$zgrlmFkb5| zd110J2F?ZjTC}E$*Ni#Dqhx%NrWr?xar~zl=aCB(E~efmHRB3#IpUIUqrS?LRsIUd zG{2=8ZHdv}88A|b@%<=ZTv~wn8-6GEt0e@CW(yT>DNz3wHJ%O{Q-S&U88nswWBYz` zQ^?rs;g=(EM#3VMALA>Ec%!9<-%XAfy^$lMUQ+&!!p3~!^^%)N-is`zL3Z%w}5h%8b0v&0*ccP1A#UIZR2K9u?2 zPAFzfCH|cFBjgC~Uo2+)0DPR*cN8krn*{H>QNW`Fh##vo#B@8ZTd;N!Gj zp}4USc#>EnfB)YlmoSzCV|!Vmgt5-Urz)2)wt4vb7ShWDk)MJgEwh)r4F z4#7&sFU0EoDMPDdn9Je%!2M85sbt)OEMAnq&+Cd+Htt4_w2=AB7pZKt1m^ogWkWWW z{L8+szl_h&aydLoawNs&X_AYjRN?gD1(NlY>de=zlDwj34dYQNPtAu^DpA8oBK}au zD^3UI{!_yk1&s3*H>KQStfqMEPc@BQ7*F^6n#NbagK`<|-x~f#>aU(s(>O%=(Z1To zw=3NC*;u@eQQ}?T2+rT!YLo}gj-dUw8Wo7KJ#IB>Aq#AeTaAXq*dDhT?SQumEWf_7 zpW<;orhySysmjCpHAuPBFoAi#=Pn}w82e|ll)H@99&Vd*kI~b^T~eAEV?3Oh($ctn zmD11lKWf}fjP^fj+>cE5KWcOX9vt~YwpWMXV@3|}0I_C_5JOTPGb*iC`UZ#{lF!}o zn9(0NTVQ=3GbRIbeV;H=*QoSaA~Hy>&qzr$Dy;>3=ziS6Xbp_@pO}(lOs9CfzRAXi zz=I>}E2;jMYeN=vT02{C*&Li{kOZ886p6bnI@l%|^aea_!1JjfucqUN2)Ba5l|f z^fKlklmEV#(d=WDe~Z>c=D)7^bH>zdinD1y*bByr?Z`Oa)YsTXjPuofjW<3~@myX% zV~<{@&M&fx8rE3AO+0_TX^i67XQ5=2uF@k2Df? zd+i--lmX`JG1h2+@wESItTBZc=R?LD>xgkaWW2GL_!-&WB|45bs_j90UY6Xb)+D1R zv8vCuvacI;zVMbm*|@{U&4IbSCL3*-p}i&>k04WfO*T@9aecsKV>2bn=mnf5=E&>w`y-zjgNPSOuGVpvF_Cx~ zaE>vTcs20n##-VBq`q1m|78q3pvub>3 zKBeOMdYmwR1?KWk80CL*?Wy1Kgs~Nv?fJpjfvi0ye@_|O4@M4gXW~7;Sz@l_0r5W= zV}3?^aJ|Y&<0vt%S2<<0J+0!i#AmX7$K7z+XmJMlOWL_n%%cE)nDR*)AHl{jSm<*KmErMWZ({w%4CVq)b6i zd;Mwj1IG5cyW^k6T3~LU%Z9j7r9V#XbJ>UxWBo51rHHZqSBy%;SiWXv5M%j4^Lb)y z-=H}F7{@;?I|j`;z}W@x`;}pHC9=T%k709JS+HNkO_1Lcx<1Z44vhB8@7J4WJ=~#g z0W(xir5`MeZEE~e$ZQ5YL3EY-IcrrZWcI;$c%IEFUf3My;oGVdF()8Lo|oyH1dEy{ zJ@LmvMa@FxK|kbgShAQ|6`8&lQrxUZJa)437Z*4013q2=&krwdwgAqi@0ArddlRek zdnOhrZq5hB_Bj?RVJ?cg<+bZr(maM7nLS+f-?HXU#H%E~T(qqD8!^r|l{GID>+vZH-8&=8h{phy&4zWqRo*4I++2%H4++Sv!Ul8N>m~Hc0 z;*dO_@JvD5JORx94%?I)NL2rz_Zi!~2U)C>`(=i9w9OX8YX8hf%^b78hsSiRXwD)2 zNXFk+;wEzm@i%fjmR#^=b2ae^$!{f8GB*)F`jrq%n^rcr5qAQvVt!8CNAm7cRn2|G zXJ!7y1*@4yi95^oE!(`hdC79^9}}o<7PVd8U8;sz0T{36>m6?~r+DJW1ZtX}dboe_ zTIN3F$U>>VL$J2_Bk_948Cq>qb3lLOE6D@nYMVuXxjk!}<$!z-YE+;3XX98dh4oG*Q$Kt1zK;zuT``H6bwY~obn#lUP&J#$P& zrH`Kv_00XiXy2-i^~_Tq-qf+adDl&D`(<~$!|Vvm{rgUH8pcPK$nu`6dY3tu7{|MJ znahB={JTtXv(ks<<#fEuYzxf#8k!#fWB>cAV?##{3_FT0Y?49wWj8C9v-AMGY23?)Oz^pCGR(f1GB#S z%?ZG0?;joSH%|a_`#fMyt?JsVb!u*I_VDJ?EzAlYp~>j86nJZ5eH z#`Y@TshwHq7PozzPLG?GhpTsLZ{7x+U7&(3?Jd>8Y)D*wlAQ1D)WK{@{ONolp4B^; zt&yoebuhO9WBFT*4(8J}-S)Y+Qol?w6!1(>`4DCsCIMx~i-$7{K4o^T?bdHdr*39%50C5gw7C^{aAe63sz3KIKO^LDG!!~BBy z6=~laoqCvufVqG4Fss#Z>$6bC_w{gQ!Dr3Az*zq^oqCxS6Cge9N6j>=6Hk=-H+IT2 z>k{LB*G%(HV*I{$rr8Xb%g;0~0<(WV(;NcK_s2{#RM)ld6RE#HFkhd(=G0r=_Br0E zpSjq>XF9!NUIga(qW-3K8`>X|^F>E)>TebxE-m@ZLjBER#7AU(UMSGtypdS>s})KQ1s)(0URU#LgG^ChUX;KSYo)@0vOxBbn0+(4>0?? zN0{3hs`TtXA8F0`o`Zr(%ehDMsj-lk>+9I?UIWZ8)g1Ld|dK?TBFRf#KFlb zezf@qu_bvxtcywY$C7V~UyJVfnok^G*-93chJJ z_3-h8X=ZO^f$Q1dGWQbWdiGi7{CiyeRa57gD?OZ$y1?A*;fAS;%?rR;qU9T!XfKwT z*1al!mPnF3Ca~O0AnqaguTm?_^}vILnxANqy29My;U`j8nTHxf`J%r}pOL!OY;d1q z9B+&XtT$T&IQR!hhI(IXddxZ_QJ)5fXvf;ew*7diVTbe1} z0z5f2+uZg5*hBB1+szzc{5@G>ySW#5l4vdUzn!|>Jni8%sXNV3bCn+ddS>QJXNOuG4-%nzcuPt`w=p<@65)?Vzr{ScNnPwKyvdcri@AW!~4&d;U(XqI_cG0)GOG`kU_zy6dt4S0ZfIzxzH z=TqiNif@~u#`C94nOXj2hq1o7eBC>;JWo8$H|55M)%gP>Qe1vc+CL)YCll03eaik3 zDL?1(b<*AuDW`M!gyc#k&g8PHkC!*d^1b{KaY9>feb1Or0ONc`fzH2}-6X)SD2sXr_PxNDL=N) zIWzJI+KcV;n^}t(+vmLb1TnVH@8&3CY@Z9}a$;RC)3| zTG?JjJ6|xTKJIO=OXi2b*j`TO%jO}9$M(8no&(1AxTW(IbJPAuHG(%A@uwWECXF_9|qR0G=eYH#O0+b0KR!#tUq(>#SdivAv2|mx!^w zuD5z8Vtuf^idy4|vAv2}lZmmtidmr!m>%1!n00*;GPYMSs~qs)NC|0AhE~jSh;e?a zm{pY+=d+4gb%=33tC)2MG0tZdvl;{Q@3ENG4H(LpwbK*dt;x;S0T1_SQpGyu;h{}xSRK27{gEFo$fsc4I#yR= z^*yB(HS1W<661Vj9qUD6oUg27y^2ib*RjR`bAPB~tp&#ZFuHSsRUu84$Mef|tyEyF z-~1cuT3az*!|%!7YUL24fB#miM>^!E`M-MBU}TyPsAr8Q#`mXs)+}Otf4ak3NsRvH zM%K^7=x@Hqie!L(O|1`0((bY95aa&Cd#qc5k88O9@LsDM@L&;`s`mdhwpKo+@@I+V zazEmv&P}aXyCWBs@g0KAt*OA=|C(EKfw8|;D&E}MLX7jLEv&LntNdeyE%VRq+`_6& zTvzh4&MmD5z}!C`vKo81K)Hvkhk?02wz0ZmJne^SV`XAI_0KleUSgc@Yio%fs{G>` z&iA#oDgh4`DYE=Afwop7;_qgt=l>&CGfJ=KBTmFUVxAa@{4Jf6ta`*blHV-V#YzOm^f{f=tko~6^j!aR z>wRRJpGdd15MzHxw?cg(J$-Mut2GBWOE}Zid`nmB67X1Yo8+%LceO_JLwg>S+#=k~ z+6=Br1i4K z0Uy_JKBSj537Ffbm$lNv2Rh6A166*Wzs|HeA=7!KnN~V5pI4e`%^}A5qUWs~N{{XH zg4J#i=%e#D`&fs7`FznnR`;PQUhX$rBE;%OeXJLVYXSGQ1`^km{C=ZXtXahMf%{vV zh?n1}&X3Kqz9L=={Hk?f80e?|GQcV}Trt;wfK|=I7dsEImH~792U=^8ss0144ZvLg zfz}0Ltp8xE!U(J{*8eqY1To$(hFZS>j}_`X*42%MT7MF&`S;b0Mp%K7*dA)Wes!bK zR#9MXuW{D=aTx!OyuPB#IBO3u*GKYrw|;}PaaPU*m*cvOw?3PsnEUqxYY#H@?+Mmk zV(fnttVXXxdJX&AMC%-ImY5~)_iJvLY$Z-s@mWHfq4*7JHt}mM<$8)PQ>-1t>!rPe zw70BgZ(w@W-v`9cuo}FHjQw|(H4K>N7iU@XiLw3WSly;#`VT?h9BVD`Sg}j;ja}wi z=ZFtVwz|x-Zl0#nbN^ppwFc(<=>jVQ7~8K#mj%{XV7~qft;xu=zG0!Yh#2>?F1D5t z&~#-FelPt*+)^urSoN1AZG|=3!zbcaSTl*S{;RBI zz&L)c-({6`iQ;koa*Z|NEodKje_#0UT5AU|)^Cuu&N}4b`@6hn{pR5|T{c*u87e=f zf1=AqtGI`ALYpni!=1W(U_I#J?p;2z`g-{A9b2vMkZC_twsi?v%$NOTf4OYy%uFax zR9>pS&y#JHpM^X|#vdv7vDJ)N`QML}+h%1VN19Go#v&84tN?^V|pIaY!I4ATk zYX>r%-}ghg-B#nb!5;X&vK8EIjRwa2vx@Jr-t_Qeb-%P0BS$XE^5pk8tnWSXme^}u zLKf=xJ|?i&YC8|xU!Cuip?z&7BE$TO;#7*q{`j@^3^Me$^L4+r26}j5mwnbL55L=G zzxBfc&`3#5kJYreJvp@BK^)4{_tKaW(z}n*BkGmYQN-Y9?Q2x#?hplG7 zIR28~|Fq^~eB}1G)Oz%z)-vLIBv&eQ)LIM7E+vTXGEmr#R_m)}km{kxM z+xv2%p}ca>Du+80|mU<%D(0!#{NS(YkAiYkx&?(rV`6GhI$u-GI41 zKU*^~K7#Yvr>zCV*|I(lXs4}}z+9ix)@5KU|Bo)Gt-|l9@{mJmzgS7YSf4^^XRYBL z*3*8sW&m^fe_9z!!Csm#xMV#;{HrYA3SYAN5UcZYx>dPkWf5tlrN-o!&BC#Hq%{=jT+*xmz-<)zE`N-LFqE-%iW3XIpQwh?b{_VDJ?5xc}HutzMF z`db!zkuBpnQA{>DLWCE%PVEC z1x9_V(@NQqbzmQ~UuMD5_Do>DAC$4zAk+D)W$jJGYCV5k;j;ENVAfyOF7uw!hx*@7 zD{H3#-@VwF>rq$j}~^sAxY3 zjP@&T2RupCkm>iQRkXKkR{7=k(j^~DyUD%`jQ7_&w90mg4^;ed4ZlZN#U298`l{Mv zfX9jsGXHnURqfY-$BT5yr_-w1bBJG*T&iewJBN6z>DpO$^1pqYul|nTwL;F9)8cPV99UciLx&)%vi1Rk+i>dkbEVdm;WFyD_n{=U)}>u?uWf@vOh8eFoxL ze^a}dCw^nWrnU*3P3KoOvuhCJ`H%P8cOujImCfx3C?3yyY;HeB@p!&tb32t7&vR^U zKSPY?IX1UnCdTs|o7=;Q@jS=o_GDl@&r*M|x&1aU_qP`IJHV5~?gK)!uHM4l?BRCR zAGG&)_{Q{>cJEJAdyEx(W&g0#TiJVwk4vtc-r6qzsfr&j&P%SB{;++DxZnHo`(x>k z*&}vheEb~wz322qJ9QUw8Q>&)EpcVZ!7?d!+Z>Fq58Tn7K-^q%r}R`ihd5DkkMu6~ z{C}zRV@0Mc@1^u~yZj!-eEoXb6@YnuuBTnc!Eb~|9M|4_TdSMK#Vf5T9F4KR<_huJyEabxULUt@lJpC4;q0?rbD$nO=dxnZnb=^NJ`ON_JI0cUG?-rYF6=zbNC zoDdvucOu5~?k3nhJv<;V(H{6M=o5i-A-1Paw#OmU^J9uV1vpETnybnEW>f49G3np5 zQxACUnPzwM@bO2c*~5_|9i%^TXWU!%1Yq_rzh%D%jQ-{Q=`-xT6p!-_GwoBDAME)q zeWo3M&@Jy&`fNLj9JyKAmt1qMU6B~~tIxHo1M~HoYbPMn^_pvcLyZ2?dG;k@^q0=F z%|og@T#tStZl3+G!*2O)SiVFSJh)e^NA9B`Jib%Y;Cx7?W`|Q6w`MbA1Wb37sJy}BK@80^jeJ63Wh5S9WK4m}3 z@xW*8=ZGr;U$7?-R|dXfuLNfQW5_Woxb5BG?vQhfhhJzN@7(3#S6UZv?)UJJ)`gw6 zz#j#kO_5izbrEMOFg|bMGOl-;RYd#KK={%^C&PL)Nq&_pFl(Wsln@g8=%HIt26IE9T(YbsXr@DuGmM`Zt z^6=R5hV!_GXO*wuWP13E@>QJS9zI_F7H6i1`M3OR!7`+7R*p7`k*J)MCylz!Y#UE_floE9||WB++K<3(pMFrWX`-_Dex9klloXKmjDb~*tcC;#AU&NIN-8u|xcbA}M3e{hI1F(&^I zXSRoPLPMRE9zJ}>FsD@l*e`JYak!I+9C76P`wInzJE_FCN^YVJcb=#8>iZ)7WcV0vHbA4T9KVH9Mp)pPc;K7j|-Gm5*$2!%JL0@|@*165YyEDc)$;jfD z@=D(Xr#JEUlACA~oO!q6^$AUtZ`~y(I627Fe_nS=)Kl@3#2fvEJRkdYry22J$#Y9g zcAg=gE%_7ihBK15sMPmPi7C!o$dS=9{u}Y8v&@tJ>x?&@KY;oEG|dUzuFB)_#Wbfd z@D@=<>U*!mH0K#$e!fj}`uWli@umOCm;RzJeW<=F&()s+?CO6G*tMs>Fa0rJ`d@tM zFZt3xd50>`)!!Z1)!!S~wdY%3`X7Ah&-v0n-XKl@r62X3$e8Ke3(WV=S zAk%q=Z#(CJx%{`C7Wb&~IRD$uRA4Nxd7*jET41#2bjAWF{$8km1ix>#(77I2G?3*b zX$zh5z^s3v(+n8%pU+t6OaSKc7CA>TKitp87Fz85flS{QddCSg#`5s{Lhm?*fm#1M zPCa1Me>vkFCk@kszCqej=Oth+Z<#Y40t>x28P);dvSalhP;lBBJ5s!;qRlDC#z z>m&fPeQTW!z--T2CkN9*eKQNLb>=q%{lJB~u5*gquNdtu({+PW9e8l${`t~BSoM9U zF7e~UcM_}f9kUy}?=%DE^51v%1EW5p>-$d42fX#)=zI>0^}ng>CTG8gYj*v>snp!H z@2;*}oHvmpGi3P#<34s~6R(y0K-Z6*#mM3l$*m=e7Aim6^Rbf%jP`Vt@ymeudT(`+vTh!HY5+|y32{Q_LjHH*#pe|W0x}tn6Jk! zXFo97Gfd_${E*6zJhp3&a}O~8p8w^v_HcW#+vyI>-<#XxJO|9*m)qkE!u0h0xi6dv z!2G?rFPx3QSl*jmzjStZcy8Cd&W&x{_E_BYYo|3Zx7WAMPK=Md_PttS- zuruy}^BpmsuX4aSLyYI+A8^FO-u61+GzMn<2b@2F(Z2V(9(2mLb?y0}>mlbU;OqjM zWc$nW)tp|$yNF*R{zmedg2$Z!#6ME}aN^%2S1)ewHxh z`sA^tjysK!>G$-5v+Pk7kM@4m^+)G(VE#VgN#{Fa++TarIZ1rKEboN^C!Jr3aenfo z^CxjT8GoSbNhkOiv{wP#UwhIiM2!2xPCCVjJA?fvopQvzh#lhIa=&i*A}5`y$W*_R zP90!;pZvMxNv8$H(RH6k-&o^i+)u5gU&k>iE+Qyd1o5&2h#pGI-Pgs1M~0symJni`^$MJ^$EAUKfC_! zybCPncVzw-3S4m36MrJ-lZ<8;oGr*y{|io;_9{PL-wV#&$aH=GbovA1^$k3A$=L;* zU7*w=xqm0&vhx*jMdE|R3B)Imsl3ZhG|_E8OI&s;0%Lu~1TH%@fcf`)#c2i1_m97v z#F+elIjJ6QFaC16d$?6lR1iXb_gL;#R_Ln2ky zN#*y)ZzcVGDEIRP=9 z>>5fup30v}a-7Vo?DO+Nh!2w95a|tz6_jrk$#on zmf^){&xlS~-p*7dgW`0VtA)#RuzczE1Bb-*peHQKf{YV;Ko6&984wP{2SpWMxd{~B z&=<~jKAML1bp#m{Pk{`H7eIzZ7D)NtMEM^kxtRJPxBC+meu2{a!=I{Lm3b+#jqy+Zusg~RDCt!mxIV2?9V|l3OFQMS5bC_MOq^zh2MQZtfqGK^IFn#Eje|d(yxiwbOEt3 zCVxO|0}hJMW5PLKKzv2vf5Cl*?F#1JANl_KwOr$;`tgf>ReOZU{;)U<`QtGQ!Qh#Py7t+h`?e@j^yNNlTC5Ll;#SYSc5hd5l z-`_ug=dLC$-imfLC;iNLUkZwrzVQF;bbNp0a<9dYfV~01>HYj+aaCVU_$BN0hcmY) zy%mpQyJC1iFmrxxFD~C7-Wc8&LGcQO4pUc>Oa(qJV`6b9;u3o;b@p8^yUB3b#1N58^QvVML%;&blL8=E| zPnJi0_4|={5{w%H;%q+oIR7-d?_fK-&tvWvvGoel{miX5KF0#$0+r+EOBBxX-(P=u z&edquE`i+k`b+K&R_%1He6e=Q^AM=qf3J_Pr<*>%>*m+P*Ad4#nwU)OU1)%^KPY%S z@;?>6YroPf$5$h+F8RHS?~4WA!FDS_(jr-zB)^xlbowa00a2gg^W%Fc9`EOF`pq*i zKgZ+yoIDr*ITh}{NAr6qzRv~3{iKiIf3ZIX#q<=+=MVo@`gWAQHjpnM9;f^n#C<^q z#Ym7LF%4u`ECMOlRe}r%f4X9?E4^;I4V3N^kn(+4%7DB-><5-q!3GO!>k9NuRzodul zT#uc079JwlQ2gsnv0jUXpI!@31o&8B%4!`elI&3#? zKb8UUJ&iZGU6J`cCM1^5M|-ax@7EI)+-@zXol##vw597?4c_xZg5#4Z9k(A}KfEuy z?RTx~#rHG6ME{FM^$dv0zpDBKbL-WG%E$YkeBUMi82bm862C{%&(BbPzyI&w`wjE@ z3o-q*{fX>XEFsUHQop+wseG3FzJ)R%22gwpNFNZ%AcNu=kRg#pdRU)7Kl|Tu_O@Kfs}q3%E$Wr`u&_m_iel{ zyY0M=!Z(AI{%#oG=k=%lMCmS3y4Z5_roRjB7xMW>_l?-}ZaLiVrc%0C84zo!9sJiV zHk~Gzx!$qu?)Hl+yJD}iU+>psH{ah*l3jd%@-vr*_2B!YeBP0tWGMKh<@+AhgZuT? zeCo9m!ufrf=K*A&ApZ!<{H_zXGfTFE({p=&LFF6(DW6w#-(o)zKX*xB^9EAPqR*(U47x6{X%jxp-XPvtb%jNfKlmWrv4^2V+=*JES z_G6gs9L&|r{%?+Fzq-F1_6PC&1p9UHc^nW|pq@d2&()B?`)OF9 z-y}}p^^O-f-igq>NdXaFrs`c#jD_(7g>1M?*T z5dl3xnlA~7Lcn2B1Z12j1~Oih02v`Y1#8j8ZhSzz0`=qcemx;yJf~y%PxD_(|KHcg^Hx`{zu)cv`E!Fpoz0+r zf1Ho&k1`-`f_9hlZXiRV8pyD?1*Dq~{lTuj9rSxdDeuSRNA~|7c|N5!=nIHjNiVYe z?gz0^L)jU~<;p(JFa9oH{=11ee=}cvOJ95&;zvLRL~1^a=>noxKJhP8{#QZD_X&_8 zF^1Z3(w~?r+Fcs&*JeKOMVackAHc7vk;Zb<52eBpp@@d zq@Uw?yvgH9oHv)_4$u=6r9p;-MS6KX0ZO^Pg2EF>-UgEA(SxD^Fy{}GK27lR7@v0m z-*b!oWtzB`^zr?$IdMynL3%z)eH7l7!g+ie>(}S!neUHqQmAMbO&V*e$+$GGJ_2mV$~@cIf|#}O3Y zUcmQ9}ruVJ5-1Q`^pUY$a#|CN_j%Ry^`0V2M zR8EiSWcgE7eS=i4`yPn;-11}F*}Xoo_5{f9tWiA!0^@@MuUklr0K39s9LP8^k?dss zc)jHLYZT7!`wdH}_SVD_3g>=3WQ(#tAez3Y;@SV9iED*d`9tN)o8BLe{uE7Yf^uEI zhkrhg?Tq#NyYG)YUgPy7EdBRaeqZPHM7S;`AhN06oR8(T^7DP$ub1<)yq2ElY5tP$ zi+zaufn@)HY$qB=$F_qzUlKcy!{I#d;ra#n{=oBY&1t?8Wk7sR?QxK#UoVE|)r<33 z?tD&u&&T}2aovktAM!Q!p93Ie{mEa>&pl?8@;OL$#>NM8!#O>#tND8}Ku0u4ebZR=w_B-xEvSBvQ~jO+87GE-j2DwZy7q8;O@Q|@H=KVbb!mPa zWkAfKbR5tAT=dVn{d*Oyd-Y3fFZS=s^HrezUA^q*<>wxk!*=-faXa|0ANxuBPRI5c z1u`gRf|T>)v@Va+jasbIX>y$=rf&f6rS9{y3o*+c#H}5?UaydUiS1!V84%n)>^J7| z7LV6B9sA3<{@lLIoR8D-ybjmjKQF}39elr+>$l){Bj=$&hG|_;oZx=W?ZJ}k6Al=^w+j*_)%<1rY@w}*fZcx4X_s;X5b5~;det$XdXUL#@y-4Ey;qUKn z;QKX7_xVs}HkQlddj6g9dnNx4S#mm-<0(H%*MH8>jr_))`OOdJm!8L|`T3b&fOZL! zzd26y2aeD6PxJi-{oZmN75K~Lxnkr8|EGFUUnDpG6LYW~`S-y7QD&ALj``jD5r=cS zpZ@Or!N>l}{rI?``T`+1m0Q@@-- zlIMR|;<_Dq&N;;|rTTF`PPdlgKce{EAcNu{g(C-YncpKh-7!cP5P}=w-L;}PT_Y|{(vY7Qhv9HSO*!T z^;sdo_2zgiFDPz-bRog*h%DE|KzTuN2kAvSy1Ea0^21(@j;3Y<;MH_FV7ovBK_R1 z-N>Go$R7VXna5$BQjq+;Au)>5@$=FjkNr4&&2*?oJ|}5EiC^DaR1S}u<^Tu9x_j}x zfWy&`E8FD;6&}is{}B3(^dr!^A6$qu6kFT@ts`@8pMLzXRLF>#SJ6KV385zOnq`?>(ye znlrAX%jbUQ@2Bh^`KRIh z-oSpU5>Q@1l%n=52QrkqABESW$NIC_ugcQBfAD)1`YYu1qH#Lw!FJ3)Uu-+ebJEDZ ziXhof6`*lmF!z0xe+M}J^M`Z3ywYE<2bZY(Q$U~}A(-p;{2KhQa=io02k?G6O{7x# zr$Ng4lAYWSS>ifiUhnI!t6)Doj|XZ{{?oATAt0D<^My0xI$llqWkX0G5Y0daY5lX@ zw@%?7zo+Uc*Li~siDU>5=celp?5@w|`%n*gHl2E2y+nFmrF6WWa00N}CyMD>*2CxZ zG)i}y{1$-9KaY3`Nqj!K>#RzDf%*A8f%m2JdnMc94_^oRLc$;aF@y*64bLxMY>^@J&XT%Po?_T;aZ)BRn&YzNjqB=$hP!{P|F^S^JeFr|;nlb-Fk zmR?Thw-@cmt2YVylYGyNxo&9THcf4NpETj+6zJj0#t-^lA`wW;j(Y!!A$RD8h ztf0Vhxu1kZABb1uY}N1L#bA(;+;X{pqkeZ^82e55`R`v(#Ovtqdspd|ehPRW4$?aP zkXY7Vg@<$3>-*ESfqWrKAExwix#@Fg9{{iCM}LxhzL39@{Wct4mG(36{#`%+cYa*g z&&B1&`eoVQ9TE}n4~0cR@)NQDipTxzZ)d-YpIJYS-{g6naQ)r)Uta&qekIo9XVjB- zy)xTVmh{@xzplkqC_Sc==O|D<*2i|oO1J!Kt5tu{M19J~@9+1L-qsZEXTP72^Ra)E z%VRsZ9hTBKn8W#b#rOM@=);9V&%2huX8{Br|V(zOV8_? zc)p`O^&bxB_cdP6>t9d9^-H3BxIavOAABud&mAN=-H*Tlf%7*(f%7*Zf%7+En!kz5 zGk?R^ll63_@_1f?!%@1|HG|TzAB!dL3*q}o?EHb-U-7xX?CRz6*sgsw@%e%>K>nGa zU_UqCH<_oWVEdrVo1V{?`Qdv^$Lr(#%=03#(w%3*aJk-jH0p`vAnj8P<(?nI@#y#9 z^8;9)`<_^j-fy0T_6>;VsGYGr<$Aa&*d92aDZj_D8_VZ$Df`>`zTtl_nML~leSF^c zr;@ZDV)G0vFOBrPKyon2i6p0!e2MCT*GI00+Kc%ctdEsEKH=YOm1Gqk5P1Iz3f@PR zpT94^aNbvr`s8_cWY1V?S3k4=isO+r!7@L;cz*Gy-}RrzrVEHS$c}kr7c-aR_v^C1 zmi?mmyOZN0(i0o*`cFCCPDmFL=&ufwKQ~Ssru_Mphvf#y53P}ZTb?@w{_UVROM1hr zRsRf=pE*vH26odQqjMT6LO8z{y8dnUPov%t`P0LsKTe?jc=D%5#4VtwKyEph-?a<< z@gdQ8v+7S_Q6JK~cEz@r+&2NwWw(8rll^}GIorqA<680laes{9o9$=)9Deow63p!fvFY=c_d-*=55=YnimQj`&Hp0QCnQGt>d*H5 z)B14##e97I^Ol>RUbG`5&@MM0UymtdFWTq+ZtyzB3;bPaVkx8x(ELg;cfNz?h1Np6 ze_kk@C*22EP3PLh?Zop=V>_w-E%zD7cUbiv`x)86>qdEr;6hE2rai zubltk&8i$t>?ZyD$j$>GJ^SxpQR(D54GQP?Vw5~yaMyd}7mocskb90%EVJLz^_%@f zcJaIcp3ji?ToM0!3BUhc@YRF&DQas}y9NZ-SIa$jf!|l+C?5S`K~Weul)EnCTJc(@yyuj^oaoQ~TO{fct^GWavYB6YJWKW{l0FZW|pJYP45%He*%{esK$w>Pi% zXNlL_U0=!JZ^3#U?hm}*PNQ=JIb8luz;CIEo579%t(OUk8o+M<;B<8&KZ^FT|BU^^SdWnSg6!e@6|PH?`!i^r+10~Cx#MX5J@L6pxNbTi8qs{2Kc43Y zcpT1tbN~4}{`mo3AL>7E$G>iw{n9LPz9R2=IWJMW|DP_O*U|XvhkkYTr@Qki1Ie!Z z+G!H_!SbH(!}Z{JEYF=+yjHxwys=~lOU&=if8hLsdtQ=1p6%dqI+uU-eExZuyz79k zrQbgv^52$M9L|Y!@BhqvpZ2#Gm&f%+d))TN@uGX*<^9Zj|77NQ#wpbP{&~ikzJAN) z{nP8s&k5|GydNu+yN~Ptk5~6iKIiZMd+qa|_FwLw^PwNgb97-IJ0zA@_aG!55@kT|NC>t_;-Hw zdEUJ5d;e4E{nwfA=PdpA)vMp1-TOY@Z~kw+ujltZ!1ZCt*Z)6lkJxs~?|J4v_jp~z z)t_VB{_=YO)X#a{FZ;vUPwtNc;5cN`*b)T?mNl5zk}zK z{CfXxex4`g`NRJ-AJ2zzem+ME*Zl`Xv7M?N-Sap(oabYh{rd%YUmE%oTt9+8{ZpWy ze_xttMZX*NtKsj{U5|8u(sMZX2fqJsyYsvef6sv>_D4D=)w=ktfh>S6y5m*eXFyXo>PC%^E&t2e*-Fy6nz&j);;;QN>psPo7%@`v&vY<67zYJZ*fw1O@s--QOkp7v=fu3-P{+ z&maCh1Svd3{@VQV$?w>}IoKg_5UvOBzh}Mv_^>!b>0;jx-18jxeSznT`S;I$FZPS_ zdn3O8x$kY9Ky?E}B5Q`1>z; z{d?DHPxi<7(|rl|Vb^bSt@zk+n(N=;_evfQU(27q^<5!t9gcI^E?$SfnAQPtIO}D} z;h)pGeasgWx#y`orS!}1Vu60Sj||v7_muPVdAPW5Qtm^8>ktxnu5(yCu@CiddMrQh zI0O5qM*HX8@nu=6AKT56_3?P@bt=byUGiH`=}%`-IsR~5*Q^O%-~1_+#uY7gEgam!sC^PiTOUt_Wj*(wiEB~JRak9BJO#mJg&Z0I*#Y(gTMZZ4q*E|N_O*l zPyRk3?|03hc;;t(JkrP9ulae0`GR!5REX|};oSYFe>a`qe!hPHH2je_vEKZA&rino zi-6#K816D(H-7%3bmRTZ>G{0MMbv&M17a01zxVL-nkDxul>UCA(RUQ(dk*PgyS4+n z>kiQ`?6Lv-oTWbl{0nlQ5y`!zhx-wS-+mbHJNJRq1p80e55eo8zoq;r1LEjaS?=qn z@ZU%uOa6W)uOGey=>j779zLi2JmvpoyNdbjV&;C1?dR@uFMb5uu{_9N?)UAu-x#1T zC>lY$dtLnbDnPtEj~HZF)C3tPZl`>l9^>VCQ50Sg^asSl!|`{)^99&nwA^rRf3^$L z1w~D&FNb5kyy5>oJ?|fv{up{sVtrTVy!!uXxqiEuOVGL-lmRhuBKEU)zr*%n`2q1= z)PA^5hrjE{-<{RO)#LLEck^-i{NBvta{szU{*E4xiz2Wt-@PxeA0fZUl zT`$4?5&co_e*CM4%k@&U4~pZ_f9F15*&oXNmdCMt9sai@m+!xyazEnn29FCcT%IQY z=X1&D5uA_cu1{xuEc2^}->=5)gwJL7`)a$XKk@Ge%X80FJ3{gKg`*vL{TH22;r*4z zlWgxv(#Q90_U~~#>*IOYEA+m9mh$m+WW9gQROQJ1Xg^_j{&@61$#aGvUY>gfex{Jf z0S@Q!Gu1kSdRXRX7yAQP^0(7B>0o%9EYwx02@vLwrb>D^xmp-Umsx zo29=WasBXpG?43O;qVL^zn~1{@t4Hvb;oJ=owvO8-$(41em}uRvKPbUx%$9CI(IFUJD)Wa z&SRD5+R?eJ{Cy_Ao_ycKb0z}<+f$C?;5{@%egpZPb+U`+q4E55c@7+Xzp`nPYBx== z-T!Sl|K1)=T&C~bu=KYN`&T-E-SUg<`7xi@$??2j z_3twJ1vSCx+26pN>9Z%x$76x>p0CXQ8Lw2|rB~x;>3x9lwfbHukE7ZDF_ZMOAB6oF zJbqpP@vfi6&s^Sy3#vWceKWit=tBs1?}NNQjo%0S@>+UuJSo4ode!ps3zxqSvg7ZS zcWpgbe%|l2`}O-7*YyO%>oo2g1JdQ?bUirVdLMK6Kb1WHj^*dwr^fFm|LM3B*BQF| z1$i98_mACFPycwA$I*8zQvF90S09b!DnqkVerI1>9=Aa|VUU%${C=4Auo@9uZ; z&&%_c7k^`P|I>=8^e6%j;>;-xm;g ze+triH+eo0tPcu{3V*8W5hrc|DbE2utXR&k!hEDA`22L#6C^z$(i0{$yYv1BsGYF=@{TX~`OW?{oJW@HK&gJ`={=>`UR7@`H~d=Z zc)Z2_8+;B)zYV=_@bzTBCQG)*zb^bR)gwQD0_)@aZLTPL<$5WQ?sJ0UH&ZxEUf;=j zxV?D%tg?!TCI$U{u|5Eh}ie!*-oz`bqUw^n? zFOJs&Vld?&PWcyu42YCIsP{eK(Er2Ux5s5wYz@!ev-iVAK+Ox9_aa0?#Uw+e0u{uB zB#)Vu6%~~xDkv%_DtHA&MMXhHMMXtLMMVWgv!auxm6fHXo~W#>tW2$}tiH8oW@B4ng?~m^X�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 diff --git a/dfp/lib/BouncyCastle/license.txt b/dfp/lib/BouncyCastle/license.txt deleted file mode 100755 index 77ec4fae310..00000000000 --- a/dfp/lib/BouncyCastle/license.txt +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (c) 2000 - 2015 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/dfp/lib/NUnit/license.txt b/dfp/lib/NUnit/license.txt deleted file mode 100755 index b925b958c6e..00000000000 --- a/dfp/lib/NUnit/license.txt +++ /dev/null @@ -1,15 +0,0 @@ -Copyright © 2002-2013 Charlie Poole -Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov -Copyright © 2000-2002 Philip A. Craig - -This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required. - -Portions Copyright © 2002-2013 Charlie Poole or Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 Philip A. Craig - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. diff --git a/dfp/lib/NUnit/nunit.framework.dll b/dfp/lib/NUnit/nunit.framework.dll deleted file mode 100755 index 780727f219d08aa635e12a56a326850ef82dbec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151552 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%0ANEfz#`T+5knLeJ%5cmKE0sc26YHG1oPt)XZ; zn7B;NRXz?$vBN}C%;J&Cj&Ct5{Ega#aDiHiKQH{+isW!oiXUI*3GN(1ayz&!-o~#( z+3+2M+?EEtQm!aoYrn~@o z0h$X9TwBQX<#^~3nU=#W^SiJFFgb@So8F1y&D&pl(#6I7QEgdV;)Jtq_`N0Wh*f=joXsl2%FoCwd3GSXIsvH5p-K{a7Hf8Go?KYs#r`yo?PDw zvz+4UYRjhtzy>@EdIM~Lxh?z(wLz}0MRVRI)fAb;A&1sn&J{h&_aci;rK+oT@) zLi{L4Zg+L%#qK69mIQ|?cL)wuy0};?xId4_Ci00xmOtF~AB{fLea zI>9kvl5n=BGMn&wwv>PM%WT`akE`cMEdHSp@K})2DFc0kSShs9%&MDdt|wc(kE zNpR~synf6_(06i5fqc5M_mmNxYDC-fC>+?SU7YLN!bKkV)xo|rk>J5JNRt!W?GnUC z2To$=Q~J6hbnF}o8f)BEE4L{FWA8t6#w8@LJLAGPBxx7s6jRBf*yjO0So_Qf^uS2r zV|Ij9C(eG7M^7FEBCuB|`DLb8FbO&9Ju59Fk z1uynKJp2_M@qTLCy$^g6>V(BPeO1DqXWPZhIxgskJf5cy&QOuKmSq@j}TQIURAyq@(54Z|~?V&)$wKS#fh(C z5k-!YqSKiSAEE^*H*v_J=FZ>=+|(rqkt{GvB3;)F@3yq8;UPJWj8k3e;G-*{?O4y|%6=Tk@! z>y@hShpfKx3w?iN^_5>!dxrY%A^O_KW)>I!QD@@fIujP1`4ACilrW|@<3(>iK+uo* zlaZfgJ_eh5y>&h4{6KH9b6{W1w_R?QIyDgrejuPtVXn(yzBMNwz0_5oOCbu(A3fzc$98(~Ep# zySs>6T>HE96(;FcWrow99k?I#RXA)#yd{B|QLzcPwl?F~KAf0h6K{CM^ND!oHL(5v zgU!ND0D4k9-+g2meoJu%<_o1+(bck~Y{+-_X=EPL1es-&A15uycs*eG%<1l?j*426dyc)NgR(FE|;4YaZ9wZVl;51$;_L zQqZa&+2LsDd8pXoP)XX=A0Iv$mXR>%LkFj{yBE_K%Mr`?NhO<|rp|1B?2*faqseg& z^$PwUFmfE`y5VE5_A9LQmq=Qgl!QLkU5dqQzw4B+{R#J{*a!eu)99W@6OIW?Hh8as z4X&U+STK;=_8QP<^hb9-6ZfPV&=t`ET@G~FF$mCfLyru)aQ?OsziiXN2DU4g==C+* zOU@@C)&8;WdYC9fB!B&P0f_+xHAVVu?sL75?czA##pRQoqxft77a%$suju1%Lb@vx z>DoCfR(R@s{J4kTT$(h@d;Vw{U`)R1|Md2}>aS}HJDI+tqj&Klk3H#r(@oYx1iJ6D zL&|mmHE#h4MidUXm(w`12^CQ2o@9ETc9GK|S8IfRG2R}aDbY(*u8vudeZ_uA8&iX* z+;ohh5pdvOj;<6Wwlwd8gxHR0F53SSUyG&qA{EtADo_HKwKutepY@QVMoi8Ej;RoZt|tJL(eb3%*BB|@TukSs$0y0Aq$p(!NSn< z8-(R$*ugtgF6|x{tl~FT#&?E$g<>O$i)^Lh#yLJ#oFR^(cc@{1K)OE^EJI*h z1S^YMwD+E{+hx)=KBh;{TC^(%Xg%{)2p%J%bTDIqr zR?ZA8AK7>oga1Q}R*j|B$_1z;mB(0B;Kmg<|;L$b)0n4`j$zd$yjz<5JWJQc z3}EtCY#R6!PcD5G?;W0`&$ zW0I^&8m0XL{+}WK6vvkztwW7@n>cNjszOcml?68;Xg<+S4IHf?pLA5hoOU4Y2>cD) zfPh;59J1TJfg1tZ)Yy?At81i`WX3WM#W*kPI?GBf3Z@aaxbnIYI5U+Rl0z+v%q`r=OykY;G7ilSrYiNx*$#S>6YIKN96JRhAr?!-oA! zq}epUhHX<~i<1n}dz3=N(L`OTv9Fkwj-mR(SXvzBi$_YO6g0b}Kx$@+{NUqYxkzE3?uuWhg zHmh!d|9fFMU}UENEUbI&xzX63yOc< zReaG$x4(eTnzz8#R}*g+38jfPdwuR0*s^(G8lq!|&EZNk4`4QoS|BCU=*h2GzDrrL zRWk}HG|P1m?)uKqRg~z_?mA+;@}Hn-^T5|&T`x`3?g@=6G{-j&Tn8du*Tc8&;!I%C$&Aw<rYL~UvN1nKq3>38yVfKU$SE!(DkIWnd#n0q$i;d z>C%1sFX5rVf0>{+a5e35LCZL)Uzp)r_v0( zVv&f#AZ4RKCD*6fMKZPn$GjE#TrX|Pp9~4O3ay#T^xX|@-c|S>d-?CsAV|jRY8vVa z*5w<5FGBQxA0I%#3&(m!p6k0?C=bh=uYi~P1PclcR~2!&62QLkx$>*{-P#O8$=8&E z6j5`_nmo=4oKdGYAQ__?Z~T8xG>5q z--|X3yI|$i%QX&7M%3-l8sLxcPLz{;C#u8htm|+srgs3o82+&zVp=yct>F88p6+*u zWEgfHR=Rd@^Rhne>5rz0xUuqm4*fR6Gt$ekiR!xV1jxP$Dmh%MA%dl`#>L0SiN0*Oo0k4B;Dy@Q^y?m;^PmS7u*;yw zT#+?XZT&m^-mLsT2Q^Bu&o&}_Y_K1Fdv4&{AkhoaU@p{)Vk0c|86eS9qo|6__6jHu z=HP+1u6AL?*AE9S1rb`!&SUTbzyToDTZPmRFrW~wHq|HD`J*Q)3_bxJ+OiFUPvTcT z#6nTcZCPa>#H19_ZQdZfO{B#}XbDvEAlwbS@5I5b6K;%)QZdK^cjfR!4JbCSFYc(~ zMn2p5QP6I+E-Ec67kENWH_s66%dFF>;7(7`U8WbGZP?f@`hZfQDIlf-cn}2;Jb-#YNYA zy5)w5@26?LbX=V8Ziv=nv4Jj~&;?qUjhHrj7rqnKtr$Hvy4505YVzc#*)2CRUC-0s zEH*lufCz7lY)FEgYfuIoO(EAQ63fk?ozakwL#PX-x0qa8{t^`EC03^$ZPmc#Vr{vT z+wx1Legx%P2+Fr%=m^|HhOJSsN&?s!rFlPt{Y8P-ET!}7>iJ=bTTn(lFhgSuwzbN* zcdW>Ir4PIgxV-^AYFh&uiMF|?%zYoqjA50Z)x&qqHql1CxS;Ye`c`zv?1=?gCzuVo zPia|KXLA5?@Jg(S3d9;N#T|;%g}RONUaUegG2|Z z;fhi8$VGNqgTEx+8~hc1_oJgg**7rKl~8=NK75>qgsy~w>fbS-Vnm9H?1EBP z$X0CX%e+b(>TrbsRU55>*OQKS*Iy6CaC@n{jt@RYC%yp`_{LbT1@F$(&nnpOc9!ru z6%#9uMpk<+g!ao-QyWL!VsXccu*7A{kV(CI@vC_cUeLS@toouDuUbVOH3lM|ZwcbODLcj`!9BULETA;(NV*f5BjM*)U>rBPD zW+wR1TcX^8b8!2yHRk$8;leYffNw^sEp>$ExIYIxyOF0d7HS8#z?0aiQOW*%WdISl zt^H8^_#Z&65pBr35Qe&qyppet9mt&RSVubo3BEiA_*Nqy=i|8mj13K?d1#rsIf+97 zLZ-bNd*xBNynF%H$7h?7n1fB_Hux_*soYl3jY?0t?=LzVe+?Do6Eg6P;A@#edy(ST zwH4bMuEI>cE!*DM*4VdCTce~e$HMz30Xl)X*%!I#Zw0g_gz}{c@SRG12r!PwN)C1M zuz!uuEJZ^{w$RX)#aZ#C&C=qndU(eVeFzv9)X-1lBxCJOqnmszc^3N$TcnP*?5X&GpE!Nbl1qx3Tge9;{e(uec`H)jj)~+$P$S=Sl50qB}Sqsj*Rz z4}-QH_k#MRQ*#$BcUomFY#5!6m797cr?EXmr$%vlp85e<-t&H0NxPEkn$v9Ne?=$u|5cB+3cx==i{2g*7eVZpILf~CSZA8@bJNfd6 zyPgXo!6qmS44>VHG~SCv5k2$Jg_rw*32rk6&4kKJNL2~sfKO%CxL^o&@~&RHIrt*j zbu-tg@i~5_w%B$FaxeXkTNwbqmA94|kL?6w83gBn|HbRHC0%=+wxqcO($uzpV3?#T z8NJ@iLtbGo_4~k%diLaw5$x!wAqW2;nPwPnHuGwKnlu*Y)F?KxZD4=tqfWpsv)Y41 zQlD%A%b8Tl4!)S7{Wn&}Y@RBTCt*9Eg~&7Em*R7cth2$I4@O}b11F+JVGP73UvOR- zZ7osPof>I`xeqTxky3%=>A+Sw9hj){sBI|vklU3@R6FN%>*2weC>vw1RMqkBQsn`Ws zgV+Dz=ydBjJA047d1x->9^~2H5>pyu^OHbI{uB2MTou=1d-__c7o8>3cIj#Vh{e%h z{oauiwW_o0pM`u6GS;av4EInt%fj$;DR7+7@mDFtD+%T`+6G4lcEzm$labH(0tIaZ zZ^*WJk)vtAN5Ng&4}^Iv;l*yI619)m*iE~2j8wxLHdE2 zW>}l7NgrSuOVOIR33zkCQ49-{|8#Fz*8IoxhVE&wp}ECc5lkB@cJl z)3FN2iqA#y5)qd*1@%Yg5_-?6l|^)UDgtq+R9spfX(WbqZUXeM782Yo}(Z?cHdxru$2*iTkgUPgI_XM#aXALP^c{XFZA+~JRRAcI|p6N6m` zF3a~KMI6hYh&4@gpv5L9UkE;3BIj?s&gP*L5qStA1@Y7nX!W}dSoL6U$74DLeBGf7 zBv=x~*1^Ge;yWl2*Jf~e+v39a*RcU0eIh2Qyj^_O;rfXO2g|5uoUhM3g6vKV1`3`a zcoyBdeiyEc{2niD#jaIAH(fPJeY;5Kqty~}K8Tfj^dk(h=!?^|$&VQczT6LV(6u%V zHOa?}qE8x`3@6pNaqcZEP3|lyCOn^Da{J<$`c9AZ-2m{P_`cCT;FNL>x}C6(v~3kz z4%$}bPC!C1V9;+^8f-+wXb8n<;2X1V$6|ia=C#kUcx($O9tyCN>Ro~xvE4Fn122CT z{ej-3&SLlspxzT4|8vr-;aVh$bh?X!6cNowWM1J`zYvVY;Jk~R^cA~d#nY*eCV(|D zxpmxiaOL6`qQs=X;drk)`nMu#{g+W?c=-I&065t5x4XDB?8io;=LPDd=WjqChA~{}qs1Y^9mLLzlui83=Ngf2 z_1h?7?Si3;zQb?J?&TmRUUre4Yy}u5Qz<#G1agMA^SC;raGVL};;{41$c9xBI%>VO z^IGgM1@(DYyEFbjVs{Fv?gK?)b|=o-eNh-AZ7yNQQv>w_JEHa2iV?J))wcEM7#ofG z+pZ6z+>Yv*VZtSx&Xa}|!_ntRHq`N9JI!znN7q^ODtJyqX0v02uOizgFm(jXwZQ*< zDzoT_{TF4}Lhz4k9jEU!YtF1)=DcaAHxZNN_pZz{Uo>XwMw~0VAMb1Kj^`uRRZc$b z#40Ji5AX35Od_Yg{Rp!sR_R-To4U{2_j?BBw=v^F>jUdL*118BMDbcql80e zOrDW5m&_pk+8Lz$%nYVAW#&brissuh`TXKc#_l(3)ua zUpRT;OtT-H5Tv`1nxDUr@;|fil7%P>3BN00{>{WU>_$1qN%$#*Mf1C!7j`R}rrlrI zEoY9|oiytavOQ?4VB5!`B&>b+p|uCln*lXgxD{ud`p}-T0=MEV&Q*YNW*XR9aX(NW z?#$1b)dF24lsQw)Y(m_JEp&Fq1#~OY?19wH0)0)OM)M)0-D;i%Tsy_DuKqDPJvFc&^YIM zqgT20)5;th$e2Lp+;|`a&ivTSJl(_E+w4=Gjq5uA@SYnpBL!e&^G~0YmC|?%JIp*_{Le^mlyO@Ur z8YR%~gdk-+pk}NoKIEJQsM}eENx@sqw{&(6MHsOU;G^T4j19 z?k|8I#>~VQsNgEpE6_MVlM&Y^Pzlghe3x`5ffiY4XMq-5XdX0cH78kU7fJ6-K$F2Y zUnnmI^ix0s0$m5_7x=ExZZ1Ic84NU8e2MTa68A-kdzXd231}-;!}gZA9|4*SXdi)o zFL4#KpFmlUlohkTKobB>26TWxy%su9pgk>gkU)o6=wSDH)YD@D@heq_NFGkLafb`# zSr%F%(1!%7nq>lAFVH6Q9)a!?=xlSgK#vRb0dt8!zp&7y0%fz*^8@BGfyMyZ3g~iy zW?1OM0xh)A6#^Yyg;8YF9?*$lkx`hqCgV?U7Weuye!ZFpk|zDdqrgKE6}Yt z=}Rjuhr4-m=2nvzXbqs-GPjuqfzFn=+i(Pelphx8)27K|8~Z$@EXJMJEnWuo`dfe+ z%pIm3r}J9PPb7sqOqa*L=a1lP#>(j=fimKqea=i3DQyL6cDM0`uNTnP%;(K4f%X8j z7|>|~9S&$k<_l(nK&t_5&fIU#7HFeT-fzwm=pqYUAkZfTdca&H>3zvUmq^^>fL_cz zXg(~^PbBU^^HHJvJ)maX8+lJ?rB^bKnJ){JX)xxM%(u-$-r30CIDsBFUzNC>0Ojzm z^dkb%f;saY^L2p^l(?QA|j=8*we>2j(e>dj!xqnID)R2=o-7X2d=1wWH7a4N~6`(6a*l zO`snEVu=-ttIYkG|FTezKttwviQ5g(+RU@&X96vexM$5T1Ugxu=ghAKIvY^4`HA_h zK$`(A&OC4aBG6TURsecgpj$2Uia_@PItOtE>piXJ>y|Gg&`$w1o9A&MD&t+V1!>)dddr&e^j-c^aU_ zfaXiwpg_MhdkAzHpcR?lnMDHKByqnt`v~-9K=)_xXXR}hEc0h|We=(~Cng(dI^H+1CKyR|p8i5W2v?B9YbE-hc19}nAT7foL%Bnz{ zZQSVsU1#|)Cq@451k`L^GMlp3!CH?1GJvq3g1BdF9CjuE{aK)w&G{mwy_tIc&3sUx z5};=DcXM%;t$!ClV98u3ac>254hm19!vS3k=z57e3D9CdH;Ap@2MGRP<`#iI4Cqfz zF>|LtHvoDG&|SiJ51>~7-7RrnwUqZr+!KI2x0tzK;)ZP80}}TqKuw7IvOu{ON@>hI zB+xj4nlfJ%Xa=B{oTkjz1lkFZ=Qd>?6=*j=O@O{3(Eh^LoOw*3cSu}w=5c{e0Q8d6 zoY|Vq^t764OCNUnn=?-cbe@Ht6zB>IJuT2}7W%Q&qoFgAsZ5yo9#HN)k@N>i zc-+K2a)E9~wVq#Gvgxvk3_mX6m&ft>lk$9rg!f4JC4>>zO+wG`(TNNnM>yBqGikug zH{Y6ccXqycTEhPZX0CY=&vVVI5;k@7d7Ok(B-}~Dy(K(M!sQa4DB*g98FNESc&6KL|wo*9ixHqFj3{GB|vcFe#E;h%dVtL7(@t7|gxljXTz!ckL**U*>eIWY|F z@0kxyVR>CVnyrv-6U+S3Gv}Ds?fLXHX?+B-v z%#1T2jbX;L%-9w5iWxhDl9{{7X61|nn>)DULORT5r@a2j;D8~3f<49bA_UjO|#bpI9MWnSi* z$9>lDAqjsg;j0q1>_~jKgmWa^10nOf5L#7d9Es_8b;gMj?j@LaAp8MdC(4N^JEU45%t=bA_QXpJSa{@Oa(oH2_fxDnx8bIGi>HqYELE3(Ni zXZdZD%^!iun3sf7pPkvP56!dRhS<>(?mK%@Q((hmW?u^YS7zTM;X`d1L(E~D9-Yk| z?^y}|f^f1KHRrdZC!3Bru!HUSztr*D(MvX+4E&N!XZ13C55f#;S2vEfZviD*C_>MC zaSr>CZy`k8p39m^+p4x0PO!##-q^p6Iv6Fc&?A|Dj9M%!pNxAX)7`o>29;V@VocxK zL)vq|w-~nnu|QXtU0SidW`1FzH@BXG?{&Upp#xhh@M_;Y8Elv}9oTxNX)^nS&_;~+ zOD%L5D4WgIA#^5QEBj;!ZG;DMuZ5O?vemp2LT6%yCqG3~Skk%?rzFN&=qOOOn-w8+ zCRTq=455u!GCtixYg*q2=0IM+}gdT$6lZ)TazA@l;?3b;CiUdGl`}W|6r+geGS8Hcy9;pV`m66hb>?4lrY>rFX?Zo-$Z&JCg4@C~AmS?E$w*36wDbQ9Ju z9}S_~%qH_+7P=CYXPG~S&`r20xxrV>u57&x_vdz7=;NS#zu6^(ZZa2`148IFv)LSL zp-;A6ow?AwJA`h?Tx>23p-*95;}aIT1C*DU`$Fi3%oXN4A@r%tN6pXv4|`_ytMv}^uS4n$G>)@$F4?zd~-cnYRQId8lYspke@57UY zS0o*Prw8v!I;w0T6_QRU+sIW(Un@I^FMNWBqx^thrSdLmBI%;Chjf#4McGSICEZfW z$YPac(&LVqBcl19_NlVVAk4c&xgCu1CQLW7j> zX0Gx~T1)9DDS(D4k4p-pk;>DO#?feHrKE{8R@o=1gf>wACTRw3q^QkZCCsPIlvqhG z(3VOUNh$O`Ww@l#^Z_MLQYLAqJS*t3UkdG@tdKOCKBT-UDU&>`>=pD2cqS?pl19_+ z%HJhrk{*iQg4c}rzeIZ}VUkwUzDg@e>uG5}fy`N~U@bakP!Rg#ywSUD~!NL{L2lN7GLs5tK9d1gSK%a!_)?$B41I7zzt zs`7}S@!(me43~6=u2Hfi>FRoAicIIFZd8^_3Q{*I+a-moTa?cP&44`LR?bVhLw6{5 zCF$xrN-(^jgV+87c3yX(T_EXeC7f=QRH;PM!;&s4b?JAK4k+~~93J7{67s(PQKb=$kaR+6O4~`g zqBN%iCEZf)qvIqgv<;mr$)s)RT1f%413e%qj6O)uNSZ-A(L0jn(?l8?=c>yKv>R_upDvfwOdUiwN_qgkUGaTE<gpUCLp6rqLFXDwTBFL()ZM3>_uufHIa&m2^}YM_-Y2LdmD^O1h$qrxlWJDHG{c zNeX?6`nGqKZqlb|6G;JdD(xmIj83Pil4j7E^l3@+=^VOT(hKxCx)M7t}&|P`yY`Nb0WsNWYiVSN)mZX0(W0^sh^= z(KL8>3hHUI2Mktk(y5FVkf4BK_=Np=P9cxCMOwjVy6wJz5#YI1PXTp2JE=!T%R0rPR=+qMKO0%|B|cfgB4-31*ESP7Ia=*xiDfu;!h zHedtLQbFefwg7DsbTwcn&>=w{fqQ^Xb0U#}hE)ngxEY{!SYT zY8UvGdY5(*)EkJXLj(;9Jgq8fj-U~N-@^;MGX;$UQq`4$CItRn)zqDmuB*CwO3>4R zcYv-*(&2UKkcW9)o`pC=Z7E6DOf^~1vOq7OOi2#Srp_0%CNKjB94s5S^s*cXQ^oqbvKura;P&#Q|YNDiWnzuS!(6@oTH6Jx!(2qdA z>Ks9eqqpX#ZW83@7^wNHhXjQI1*oS5H3kY)wM1Te2gh*Dp@s`e1PW4H3+e|HtPT-0 z(vhmwQgZ~Q1BIwF1r-8?sv88AI!0@?)p9{|9pkhx^^~B+jtN@0dQH%3$J1Jb>fMFa zg*_vSQiC{=)aMsNv#yrA!wZbuzH&lyQ0pj))lXh zKlSUZ`U}FReqGc^LHIPSo7zOuv+$-$oTP=Mr&=KCWztujE$MYKKwTwi0~x69khGZ$ zQV&boONOYYBpoBe)X;9cW~2T7Mnm2nsBVLyr6&}lBI>J5u1Ys^YYEKJ|Q%^ElK;8{* zWaO%?9>H`xmpru{ql4tP;5Z{s?J9`WiZcq-;ezy9$)r%t7Zl8B9i!>wd=SR%;>22_ zQ2j*24XO2rQK()JG!oKHQ1MUya8=A^6vwE96fw%@aV(b!>Pks*#sqbjNQcj%C#pvo z@o_d${aO%?v&rgtK`UzwHj34ol13O)RHG-BzJ#o-m2ON`BLux$>oT38Hj{LY&Q#k; z`i4HM4it10Jm;!TN$2Q1b)2Mc=zR4VK?nTujD_m+k|r68)iO!bjHT)}N%M^5>V8Sf zj91hXlFE$N)V~WlT`SL6qu!M?%~+>;_2O4_y4EsdqZ%pb43xfEy zb(o}i#x6BO(lX;cb&8}iW1sr6pua=u2i3PEO*0OuyCp3%K32aF)I!;8e5zJT+G%{I zUXirdIIgO_d94-4X5*ylkhIhIiy9+ouknoaU{HVSp$ngJ$URB?ebdFwE-;s2g-cUahR2w{Rs;4ELqqo&dk}lKV z)!TwXLcXDQRqsCh`a(j^QL2SXx=b~#k))3dUF#(2gkjfuN&43C(jI5TXR42uF5>Eh zoP*z$og%0~$YsMb8v#~Z(68t2qmMuq$NuFls=+8A*q7)(y}BKkv`fKK@WvoGx};LB`IdI*0Mh@ z{h<&qbFel?Qm{Exds$MH`Ixp|QUx8U?H1G>@_a&b4B)wR4^hk~wMUiVGh4ePse1Ik= zWp2|p2&xD?XKd5T8S!h_u3`RoMp+xO)!eQf;hu2cINjW#ofm{xv_sQ|qURFZ%7Ax( z!Ue4j*bCHJ(3XIMKs^QR4mbjoDd=#(=Rk7=eHm~Ps7%ne0p9}c7IZ$K66m;~s{ua% zT@vIG_!E%!D60$Hom~eC7gRs+j=587EvOm%6xJ@Sr=WI$p0;7_ZCIfh~YSB(=5e)8Yj^3vv6j zWJzspA7~Q$NB_RqAR zcsiR$?ZN8jn%CpJxyN>Y;jxHg9q=~TP7{e-qxQnDSs z_N&85UA9(((ostw~Ue_*2s-QQuTY?&c=Wm+-NZu}u9Z}|8 zEmBeirFsiN9l%r56C_2MHodo`3hJqk5Y!Jmz4h^uqTmPIr%I}z4t7 zA=I;#{)nU~vyDDjQU#6E(;4wG(O%DyG|t{$Un8l|-a$VmX|g?Dzb)w*`-6JZC$MJc z>^Q3u^h7~8s}l6#f^b$P==p+hRwd|j1mUbo(8~njtV+;#3&L5IpdS~6vnoNqBnW3! zg07|V(s5QL=;4f}+mga&*`Yi^L&BZ|TEmHq3R?_xM9@QYx&2}Nnxt3loprx7%oFY# z!(O!~>P-a|0(H^53z`npRZkc6eApU$H+_zzx9my!R!Q6KJ@iw82Kl{b@1@_6^eRxe zlb82$*n9TgdYq(Jfrc{TGp>*BPq&TYB}@wM z=h0tpDQH^wV4z}7P(lXKRuT77_|LY%`p1k)Y-_^{?Su8>B5qrFp2raVqKMlYJ^|>O zh{L)J)jiX(yb{~T;l&<9bqAyAwv!O|sNO`xoq@PV_0}Tphw$sRVR{b{cRk!&AEqZW zT4KZV#Be=_6KSDbHiqjn1u2fp#$);hL4L4TJ+7AvY78_&KQE{Q>|7&tl7Tf_Liz!v z=&^!E!anwd9xtd6C{=%)5ubl)`jd?KSvXC{Jm3`MeIjDLhnv2SNV2Et<9RxAGvX}| zr^{2n8L{01zCN0#(>)^hc#O8tWcwHk9q@oZGZ&r_kw-mpBs~yW>`@@83($B;$&rQj zLP?__Zi1u&h{HGe@!vsxI?zN(3nD8#Ch1cxS6i&Fko1;Ev3{D-K^tD}6#a%EyxJ+c zHk#!LSG(P#M1NcmUSFv`PSRxiG`&>P0goB_QbBlq&+5&`@Lcfvp3@%`gx5D;?=1+g zXo3E?AiUb=^$bCHeGBz`L3n+O^plx9PrSax`tGqvC1i2bS&yZ9!)#6~ql!J2>8XM? zME&6LqCP>;_NX5{mh0C9eGqlcV}+iR!_$2db<^V|eX*dkQFlFF);9^d61B(U75%8B zLi&xr<@LWu{#8xMIq4~N# zMG&6nU)NU%Y8mb0`MSPWP;W++g3=h-@^~)KL_5GUniIj3>g#$ZNeyjp=xKuRr22+l zDygk)jlP-@pB-!TjgpEz*68Jo_*_}5$L3>s(`~qBt<~c>u_t?L^~5UFQ&O?VT79HQ zhr7%=eS(ZjChPR6lA3s~(^p9<_E@iP73pvv+n^s2)F!5h=LY?}Al%j9+eQj_&3eQX zdu-Ib1UX~w+TPS-1rQnAMty%Y`8$IQUOR}HQ z+e<3;_?zC7lkG3iw`cVdFA2i+?7FT^;dR0F?7HqJ2-mD% z^@f6Q&H7bu&FGvR+w+FrQ^a9=-q44LIJ^(Ispp8e84!0GmDA{~vrYg3IfLH@C~fOZSQUQvzX zg0NRq<6BN_WNF4FN#pFA(f1i%Pi#TmNEd`Hs2ll$Fi*pnBM9>}jHQBbOqj+oL3rn8 z8s`OJ>%t$gOywnD>zam_AZ!Vn5i1B=!e;ap^ib?tPrH#WsAue3K)IaQHFy{ktI#u5 z=vhfgb`N8@q-5f0yjO+(T7`a+wA<6u2q|T?X1(HNG?w&|r?-*F$%g&lYYZ2J{Q!Tg z!~PxA$HngV^fmHX9H0HZ#sW!&c3)$gq{((a<20kGWPR*W&j8~RkF#xu5(16Q(=gLg z+rijk_=dc9868x6uHG%rFk_{lZa@*nAwkLY z46i8T8l&m9C+dw*qmB5Pn9FqAXhz9`@))h)L?+hr^@=u*NDB6fF>W(DqfDu{-?Od} zJB!tYeX?BFXvqjZONM&ZHM%k4r@XpGUq;ySb-n5ulVsc;k62@oNQZ4!&uIB9=6R4{ zyVN&&GQxC?y&4#!7-61`y&4($!V}XqG2XYNYigVqgzeePXgeG8#9W$qHa8w&bP)a? z<%DMoV>Bbovx#R*V}gjoJX;xS1Yuq7Gs-QV_Z!D7p6~@jbKJFVV}vupJUed4jMmiN+#Eye?gg^^CAC$)t<%J|ip-=_5&n_AbUr zMvLJ0dir^FHHOURC172;i7{WUkEuV{tGn?ci{rT@8Ji>(+LMe!jHcTr*MGw65#v0g zsbqHjbRfS4nCEn$ab7))mXeCRdK!HtP50_$~h7q>Qey>5sA&ci=BVi$?lV@xdXAVJS8BZ?7k-5jHZq+Z@RMxw=Y zobj=Y8|j^AoVLW}8>3!i*TDLHyiqJ^vc1q)$_e^tjCYZ-Q&OJyMB}8SDc+OVHMsuv zak3!%+sAp{#gg!EAKlc%Z=v@T<5yW;GAS{_m$SOqiW*$El^8uak!Kr}d6yV#B<=Bd z#`uX*30csf&_2~jTY>3H$c6?<_EKXjqv-_qziCF$ORnoX3e=R7?c0Fsw&_MsL0>o6 z<~`lW;6%7H%ynfJ5CCP{zso^70xbk=*0ahns% zbFN{&;=bCshJzD(Pj#NrS`facI?qTJgzu@&Gx7!Dd#dw{MS}1>)p^ENPVjl^CGUC0 zaY6W=>T||5;fe35&Nmz@S?MrykXj4E_f+Q_$%61b)%iv~C-$D|d}EQM5_N&GQ+VP& zy}≺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 diff --git a/dfp/src/Common/Common.csproj b/dfp/src/Common/Common.csproj deleted file mode 100755 index 2ffe01f42c8..00000000000 --- a/dfp/src/Common/Common.csproj +++ /dev/null @@ -1,130 +0,0 @@ - - - - Debug - AnyCPU - 9.0.21022 - 2.0 - {277404DB-A439-4450-B3A5-186294CDF245} - Library - Properties - Google.Api.Ads.Common - Google.Ads.Common - v4.5.2 - - $(OutputPath)$(AssemblyName).xml - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - true - true - $(ProjectDir)..\Common\AdsApi.snk - - - - ..\..\lib\BouncyCastle\BouncyCastle.Crypto.dll - - - - - - - - - - - - True - True - CommonErrorMessages.resx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Code - - - - - - - - - - - - - - - - - - - - - - - - - - ResXFileCodeGenerator - CommonErrorMessages.Designer.cs - Designer - - - - - - - - - - diff --git a/dfp/src/Common/CommonErrorMessages.Designer.cs b/dfp/src/Common/CommonErrorMessages.Designer.cs deleted file mode 100755 index 0c838f52cea..00000000000 --- a/dfp/src/Common/CommonErrorMessages.Designer.cs +++ /dev/null @@ -1,297 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34209 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Google.Api.Ads.Common { - using System; - - - ///