diff --git a/build.sbt b/build.sbt index 401126eabfaf..e9d965a1bdd0 100644 --- a/build.sbt +++ b/build.sbt @@ -607,11 +607,11 @@ val jline = Seq( ) // === Google ================================================================= -val googleApiClientVersion = "2.2.0" -val googleApiServicesSheetsVersion = "v4-rev612-1.25.0" -val googleAnalyticsAdminVersion = "0.62.0" -val googleAnalyticsDataVersion = "0.63.0" -val grpcVersion = "1.67.1" +val googleApiClientVersion = "2.7.1" +val googleApiServicesSheetsVersion = "v4-rev20250106-2.0.0" +val googleAnalyticsAdminVersion = "0.66.0" +val googleAnalyticsDataVersion = "0.67.0" +val grpcVersion = "1.69.0" // === Other ================================================================== @@ -5020,7 +5020,7 @@ lazy val `std-google-api` = project "com.google.apis" % "google-api-services-sheets" % googleApiServicesSheetsVersion exclude ("com.google.code.findbugs", "jsr305"), "com.google.analytics" % "google-analytics-admin" % googleAnalyticsAdminVersion exclude ("com.google.code.findbugs", "jsr305"), "com.google.analytics" % "google-analytics-data" % googleAnalyticsDataVersion exclude ("com.google.code.findbugs", "jsr305"), - "io.grpc" % "grpc-netty-shaded" % grpcVersion + "io.grpc" % "grpc-netty-shaded" % grpcVersion exclude ("com.google.code.findbugs", "jsr305") ), // Extract native libraries from grpc-netty-shaded-***.jar, and put them under // Standard/Google_Api/polyglot/lib directory. The minimized jar will @@ -5063,6 +5063,7 @@ lazy val `std-google-api` = project .dependsOn(cleanPolyglotRoot) .value ) + .dependsOn(`std-base` % "provided") .dependsOn(`std-table` % "provided") lazy val `std-database` = project diff --git a/build_tools/cli/src/lib.rs b/build_tools/cli/src/lib.rs index 2d0821575b9b..a044cdb91fd0 100644 --- a/build_tools/cli/src/lib.rs +++ b/build_tools/cli/src/lib.rs @@ -385,6 +385,9 @@ impl Processor { config.add_standard_library_test_selection( StandardLibraryTestsSelection::Selected(vec![ "Base_Tests".to_string(), + // Base Internal tests contain some cloud tests that need + // access to cloud internals + "Base_Internal_Tests".to_string(), // Table tests check integration of e.g. Postgres datalinks "Table_Tests".to_string(), // AWS tests check copying between Cloud and S3 diff --git a/distribution/lib/Standard/Base/0.0.0-dev/docs/api/Enso_Cloud/Enso_Secret.md b/distribution/lib/Standard/Base/0.0.0-dev/docs/api/Enso_Cloud/Enso_Secret.md index f05f1b8761b2..709454d79efb 100644 --- a/distribution/lib/Standard/Base/0.0.0-dev/docs/api/Enso_Cloud/Enso_Secret.md +++ b/distribution/lib/Standard/Base/0.0.0-dev/docs/api/Enso_Cloud/Enso_Secret.md @@ -12,9 +12,11 @@ - to_text self -> Standard.Base.Any.Any - type Enso_Secret - create name:Standard.Base.Data.Text.Text value:Standard.Base.Data.Text.Text parent:(Standard.Base.Enso_Cloud.Enso_File.Enso_File|Standard.Base.Nothing.Nothing)= -> Standard.Base.Any.Any + - credential_service_name self -> (Standard.Base.Data.Text.Text|Standard.Base.Nothing.Nothing) - delete self -> Standard.Base.Any.Any - exists name:Standard.Base.Data.Text.Text parent:(Standard.Base.Enso_Cloud.Enso_File.Enso_File|Standard.Base.Nothing.Nothing)= -> Standard.Base.Any.Any - get name:Standard.Base.Data.Text.Text parent:(Standard.Base.Enso_Cloud.Enso_File.Enso_File|Standard.Base.Nothing.Nothing)= -> Standard.Base.Any.Any + - is_credential self -> Standard.Base.Data.Boolean.Boolean - list parent:(Standard.Base.Enso_Cloud.Enso_File.Enso_File|Standard.Base.Nothing.Nothing)= -> Standard.Base.Any.Any - name self -> Standard.Base.Any.Any - path self -> Standard.Base.Any.Any @@ -28,6 +30,7 @@ - type Enso_Secret_Error - Access_Denied - to_display_text self -> Standard.Base.Any.Any +- as_credential_reference secret:Standard.Base.Enso_Cloud.Enso_Secret.Enso_Secret -> Standard.Base.Enso_Cloud.Enso_Secret.CredentialReference - as_hideable_value value:(Standard.Base.Data.Text.Text|Standard.Base.Enso_Cloud.Enso_Secret.Enso_Secret|Standard.Base.Enso_Cloud.Enso_Secret.Derived_Secret_Value) -> Standard.Base.Any.Any - secret_asset_uri secret:Standard.Base.Any.Any -> Standard.Base.Any.Any - secret_resource_uri secret:Standard.Base.Any.Any -> Standard.Base.Any.Any diff --git a/distribution/lib/Standard/Base/0.0.0-dev/src/Enso_Cloud/Enso_Secret.enso b/distribution/lib/Standard/Base/0.0.0-dev/src/Enso_Cloud/Enso_Secret.enso index 698c3cba1cb8..81bd760ea964 100644 --- a/distribution/lib/Standard/Base/0.0.0-dev/src/Enso_Cloud/Enso_Secret.enso +++ b/distribution/lib/Standard/Base/0.0.0-dev/src/Enso_Cloud/Enso_Secret.enso @@ -6,6 +6,7 @@ import project.Data.Vector.Vector import project.Enso_Cloud.Enso_File.Enso_Asset_Type import project.Enso_Cloud.Enso_File.Enso_File import project.Enso_Cloud.Internal.Enso_Path.Enso_Path +import project.Enso_Cloud.Internal.Existing_Enso_Asset.Credential_Secret_Metadata import project.Enso_Cloud.Internal.Existing_Enso_Asset.Existing_Enso_Asset import project.Enso_Cloud.Internal.Utils import project.Error.Error @@ -15,6 +16,7 @@ import project.Network.HTTP.HTTP import project.Network.HTTP.HTTP_Method.HTTP_Method import project.Network.URI.URI import project.Nothing.Nothing +import project.Runtime import project.Runtime.Context from project.Data.Boolean import Boolean, False, True from project.Data.Text.Extensions import all @@ -27,11 +29,12 @@ polyglot java import org.enso.base.enso_cloud.HideableValue.Base64EncodeValue polyglot java import org.enso.base.enso_cloud.HideableValue.ConcatValues polyglot java import org.enso.base.enso_cloud.HideableValue.PlainValue polyglot java import org.enso.base.enso_cloud.HideableValue.SecretValue +polyglot java import org.enso.base.enso_cloud.ExternalLibraryCredentialHelper.CredentialReference ## A reference to a secret stored in the Enso Cloud. type Enso_Secret ## PRIVATE - private Value internal_name:Text id:Text internal_path:Enso_Path + private Value internal_name:Text id:Text internal_path:Enso_Path credential_metadata:Credential_Secret_Metadata|Nothing ## GROUP Metadata ICON metadata @@ -69,7 +72,9 @@ type Enso_Secret Error.throw (Illegal_Argument.Error message) error_handlers = Dictionary.from_vector [["resource_already_exists", handle_already_exists]] id = Utils.http_request_as_json HTTP_Method.Post Utils.secrets_api body error_handlers=error_handlers - Enso_Secret.Value name id path + # A secret created using the regular flow is a normal secret, so it does not contain credential metadata + credential_metadata = Nothing + Enso_Secret.Value name id path credential_metadata ## GROUP Output ICON trash @@ -93,7 +98,7 @@ type Enso_Secret effective_parent = parent.if_nothing Enso_File.current_working_directory secrets_as_assets = list_assets effective_parent . filter f-> f.asset_type == Enso_Asset_Type.Secret secrets_as_assets.map asset-> - Enso_Secret.Value asset.title asset.id (effective_parent.enso_path.resolve asset.title) + _from_asset asset (effective_parent.enso_path.resolve asset.title) ## GROUP EnsoCloud ICON key @@ -125,7 +130,7 @@ type Enso_Secret asset = Existing_Enso_Asset.resolve_path path if_not_found=(Error.throw Not_Found) parsed_path = Enso_Path.parse path parsed_path.if_not_error <| if asset.asset_type != Enso_Asset_Type.Secret then Error.throw (Illegal_Argument.Error "The provided path points to "+asset.asset_type.to_text+", not a Secret.") else - Enso_Secret.Value asset.title asset.id parsed_path + _from_asset asset parsed_path ## GROUP EnsoCloud ICON metadata @@ -162,18 +167,22 @@ type Enso_Secret ## PRIVATE Returns a text representation of the secret. to_text : Text - to_text self = "Enso_Secret " + self.path.to_text + to_text self = + "Enso_Secret" + (_credential_info_text self) + " " + self.path.to_text ## PRIVATE Returns a display text representation of the secret. to_display_text : Text - to_display_text self = "Enso_Secret {" + self.name + "}" + to_display_text self = + "Enso_Secret {" + self.name + (_credential_info_text self) + "}" ## PRIVATE Converts the secret to a JSON object. to_js_object : JS_Object to_js_object self = - JS_Object.from_pairs [["type", "Enso_Secret"], ["constructor", "get"], ["path", self.path.to_text]] + extra = if self.credential_metadata.is_nothing then [] else + [["credential_for", self.credential_metadata.service_name]] + JS_Object.from_pairs [["type", "Enso_Secret"], ["constructor", "get"], ["path", self.path.to_text]]+extra ## PRIVATE GROUP convert @@ -182,6 +191,21 @@ type Enso_Secret pretty : Text pretty self = "Enso_Secret.get " + self.path.to_text.pretty + ## PRIVATE + Checks if this secret is a regular text value or a credential used for + connecting with external services. + + Regular secrets and credentials can be used in different contexts. + is_credential self -> Boolean = self.credential_metadata.is_nothing.not + + ## PRIVATE + Returns the name of the service that this credential is associated with, or Nothing if this secret is not a credential. + + Useful in filtering credentials for widgets. + credential_service_name self -> Text | Nothing = + self.credential_metadata.if_not_nothing <| + self.credential_metadata.service_name + ## PRIVATE type Enso_Secret_Error ## PRIVATE @@ -214,8 +238,9 @@ type Derived_Secret_Value to_plain_text : Text ! Enso_Secret_Error to_plain_text self = java_repr = as_hideable_value self - if java_repr.containsSecrets then Error.throw Enso_Secret_Error.Access_Denied else - java_repr.safeResolve + if java_repr.containsSecrets then + Error.throw Enso_Secret_Error.Access_Denied + java_repr.safeResolve ## PRIVATE to_text : Text @@ -240,12 +265,24 @@ Derived_Secret_Value.from (that : Enso_Secret) = Derived_Secret_Value.Secret_Val as_hideable_value : Text | Enso_Secret | Derived_Secret_Value -> HideableValue as_hideable_value (value : Text | Enso_Secret | Derived_Secret_Value) = case value of text : Text -> HideableValue.PlainValue.new text - secret : Enso_Secret -> HideableValue.SecretValue.new secret.id + secret : Enso_Secret -> + if secret.is_credential then + Error.throw (Illegal_Argument.Error "A credential for "+secret.credential_service_name+" cannot be used as a regular secret value. Credentials can only be used in their corresponding services.") + HideableValue.SecretValue.new secret.id Derived_Secret_Value.Plain_Text text -> as_hideable_value text Derived_Secret_Value.Secret_Value secret -> as_hideable_value secret Derived_Secret_Value.Concat left right -> HideableValue.ConcatValues.new (as_hideable_value left) (as_hideable_value right) Derived_Secret_Value.Base_64_Encode inner -> HideableValue.Base64EncodeValue.new (as_hideable_value inner) +## PRIVATE + Used by library implementations to convert an Enso object into the Java counterpart. +as_credential_reference (secret : Enso_Secret) -> CredentialReference = + case secret.credential_metadata of + Nothing -> + Error.throw (Illegal_Argument.Error "Secret "+secret.name+" is not a credential.") + metadata -> + CredentialReference.new secret.id metadata.service_name + ## PRIVATE secret_resource_uri secret = Utils.secrets_api + "/" + secret.id @@ -253,3 +290,17 @@ secret_resource_uri secret = ## PRIVATE secret_asset_uri secret = Utils.assets_api + "/" + secret.id + +private _from_asset (asset : Existing_Enso_Asset) (path : Enso_Path) -> Enso_Secret = + Runtime.assert (asset.metadata != Nothing) + Enso_Secret.Value asset.title asset.id path asset.metadata.credential_metadata + +private _credential_info_text (secret : Enso_Secret) -> Text = + case secret.credential_metadata of + Nothing -> "" + credential_metadata -> + state_suffix = case credential_metadata.state of + "Expired" -> " (expired)" + "WaitingForAuthentication" -> " (waiting for authentication)" + _ -> "" + " (credentials for "+credential_metadata.service_name+state_suffix+")" diff --git a/distribution/lib/Standard/Base/0.0.0-dev/src/Enso_Cloud/Internal/Existing_Enso_Asset.enso b/distribution/lib/Standard/Base/0.0.0-dev/src/Enso_Cloud/Internal/Existing_Enso_Asset.enso index b95f9508d9d0..d8d139d2a992 100644 --- a/distribution/lib/Standard/Base/0.0.0-dev/src/Enso_Cloud/Internal/Existing_Enso_Asset.enso +++ b/distribution/lib/Standard/Base/0.0.0-dev/src/Enso_Cloud/Internal/Existing_Enso_Asset.enso @@ -129,7 +129,7 @@ asset_type_from_id id:Text -> Enso_Asset_Type = The asset metadata that is currently automatically included as part of the path resolution response. type Asset_Metadata ## PRIVATE - Value modified_at:Date_Time description:Text|Nothing labels:Vector + Value modified_at:Date_Time description:Text|Nothing labels:Vector credential_metadata:Credential_Secret_Metadata|Nothing ## PRIVATE from_json json -> Asset_Metadata = @@ -138,7 +138,21 @@ type Asset_Metadata . catch Time_Error error-> Error.throw (Enso_Cloud_Error.Invalid_Response_Payload error) description = get_optional_field "description" json expected_type=Text labels = get_optional_field "labels" json expected_type=Vector if_missing=[] - Asset_Metadata.Value modified_at description labels + + credential_metadata_field = get_optional_field "credentialMetadata" json expected_type=JS_Object + credential_metadata = credential_metadata_field.if_not_nothing <| + service_name = get_required_field "serviceName" credential_metadata_field expected_type=Text + state = get_required_field "state" credential_metadata_field expected_type=Text + expiration_date_text = get_optional_field "expirationDate" credential_metadata_field expected_type=Text + expiration_date = expiration_date_text.if_not_nothing <| + Date_Time.parse expiration_date_text Date_Time_Formatter.iso_offset_date_time + . catch Time_Error error-> Error.throw (Enso_Cloud_Error.Invalid_Response_Payload error) + Credential_Secret_Metadata.Value service_name state expiration_date + Asset_Metadata.Value modified_at description labels credential_metadata + +## PRIVATE +type Credential_Secret_Metadata + Value service_name:Text state:Text expiration_date:Date_Time|Nothing ## PRIVATE type Asset_Cache diff --git a/distribution/lib/Standard/Database/0.0.0-dev/docs/api/Internal/JDBC_Connection.md b/distribution/lib/Standard/Database/0.0.0-dev/docs/api/Internal/JDBC_Connection.md index 8a23ea9f6438..6619625829f6 100644 --- a/distribution/lib/Standard/Database/0.0.0-dev/docs/api/Internal/JDBC_Connection.md +++ b/distribution/lib/Standard/Database/0.0.0-dev/docs/api/Internal/JDBC_Connection.md @@ -17,8 +17,10 @@ - with_prepared_statement self query:Standard.Base.Any.Any statement_setter:Standard.Base.Any.Any action:Standard.Base.Any.Any skip_log:Standard.Base.Any.Any= -> Standard.Base.Any.Any - close_connection connection:Standard.Base.Any.Any -> Standard.Base.Any.Any - create url:Standard.Base.Any.Any properties:Standard.Base.Any.Any -> Standard.Base.Any.Any +- from_java java_jdbc_connection:Standard.Base.Any.Any -> Standard.Base.Any.Any - get_pragma_value jdbc_connection:Standard.Base.Any.Any sql:Standard.Base.Any.Any -> Standard.Base.Any.Any - handle_sql_errors ~action:Standard.Base.Any.Any related_query:Standard.Base.Any.Any= -> Standard.Base.Any.Any - log_sql_if_enabled jdbc_connection:Standard.Base.Any.Any ~query_text:Standard.Base.Any.Any -> Standard.Base.Any.Any - profile_sql_if_enabled jdbc_connection:Standard.Database.Internal.JDBC_Connection.JDBC_Connection ~query_text:Standard.Base.Data.Text.Text ~action:Standard.Base.Any.Any -> Standard.Base.Any.Any +- properties_as_java_props properties:Standard.Base.Any.Any -> Standard.Base.Any.Any - set_statement_values stmt:Standard.Base.Any.Any statement_setter:Standard.Base.Any.Any values:Standard.Base.Any.Any expected_type_hints:Standard.Base.Any.Any= -> Standard.Base.Any.Any diff --git a/distribution/lib/Standard/Database/0.0.0-dev/src/Internal/JDBC_Connection.enso b/distribution/lib/Standard/Database/0.0.0-dev/src/Internal/JDBC_Connection.enso index d1a68eacdd6d..52121b1af2aa 100644 --- a/distribution/lib/Standard/Database/0.0.0-dev/src/Internal/JDBC_Connection.enso +++ b/distribution/lib/Standard/Database/0.0.0-dev/src/Internal/JDBC_Connection.enso @@ -275,15 +275,22 @@ type JDBC_Connection - properties: A vector of properties for the connection. create : Text -> Vector -> JDBC_Connection create url properties = handle_sql_errors <| - java_props = properties.map pair-> + java_connection = JDBCProxy.getConnection url (properties_as_java_props properties) + from_java java_connection + +## PRIVATE +properties_as_java_props properties = + properties.map pair-> # Some parameters may be passed by the dialect as a `HideableValue` directly, so they do not need to be converted. value = pair.second java_value = if value.is_a HideableValue then value else as_hideable_value value Java_Pair.create pair.first java_value - java_connection = JDBCProxy.getConnection url java_props - resource = Managed_Resource.register java_connection close_connection +## PRIVATE + A special method used by dialects that construct a Java JDBC connection using some custom logic. +from_java java_jdbc_connection = + resource = Managed_Resource.register java_jdbc_connection close_connection synchronizer = OperationSynchronizer.new JDBC_Connection.Value resource synchronizer diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/NOTICE b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/NOTICE index 41a3f367abdf..192532602c46 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/NOTICE +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/NOTICE @@ -3,12 +3,12 @@ Copyright 2020 - 2025 New Byte Order sp. z o. o. 'google-analytics-admin', licensed under the Apache-2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.analytics.google-analytics-admin-0.62.0`. +Copyright notices related to this dependency can be found in the directory `com.google.analytics.google-analytics-admin-0.66.0`. 'google-analytics-data', licensed under the Apache-2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.analytics.google-analytics-data-0.63.0`. +Copyright notices related to this dependency can be found in the directory `com.google.analytics.google-analytics-data-0.67.0`. 'annotations', licensed under the Apache 2.0, is distributed with the Google_Api. @@ -18,67 +18,67 @@ Copyright notices related to this dependency can be found in the directory `com. 'google-api-client', licensed under the The Apache Software License, Version 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.api-client.google-api-client-2.2.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api-client.google-api-client-2.7.1`. 'api-common', licensed under the BSD-3-Clause, is distributed with the Google_Api. The license information can be found along with the copyright notices. -Copyright notices related to this dependency can be found in the directory `com.google.api.api-common-2.38.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.api-common-2.42.1`. 'gax', licensed under the BSD-3-Clause, is distributed with the Google_Api. The license information can be found along with the copyright notices. -Copyright notices related to this dependency can be found in the directory `com.google.api.gax-2.55.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.gax-2.59.1`. 'gax-grpc', licensed under the BSD-3-Clause, is distributed with the Google_Api. The license file can be found at `licenses/BSD-3-Clause`. -Copyright notices related to this dependency can be found in the directory `com.google.api.gax-grpc-2.55.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.gax-grpc-2.59.1`. 'gax-httpjson', licensed under the BSD-3-Clause, is distributed with the Google_Api. The license file can be found at `licenses/BSD-3-Clause`. -Copyright notices related to this dependency can be found in the directory `com.google.api.gax-httpjson-2.55.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.gax-httpjson-2.59.1`. 'proto-google-analytics-admin-v1alpha', licensed under the Apache-2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-analytics-admin-v1alpha-0.62.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-analytics-admin-v1alpha-0.66.0`. 'proto-google-analytics-admin-v1beta', licensed under the Apache-2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-analytics-admin-v1beta-0.62.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-analytics-admin-v1beta-0.66.0`. 'proto-google-analytics-data-v1alpha', licensed under the Apache-2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-analytics-data-v1alpha-0.63.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-analytics-data-v1alpha-0.67.0`. 'proto-google-analytics-data-v1beta', licensed under the Apache-2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-analytics-data-v1beta-0.63.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-analytics-data-v1beta-0.67.0`. 'proto-google-common-protos', licensed under the Apache-2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-common-protos-2.46.0`. +Copyright notices related to this dependency can be found in the directory `com.google.api.grpc.proto-google-common-protos-2.50.1`. 'google-api-services-sheets', licensed under the The Apache Software License, Version 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.apis.google-api-services-sheets-v4-rev612-1.25.0`. +Copyright notices related to this dependency can be found in the directory `com.google.apis.google-api-services-sheets-v4-rev20250106-2.0.0`. 'google-auth-library-credentials', licensed under the BSD New license, is distributed with the Google_Api. The license file can be found at `licenses/BSD-3-Clause`. -Copyright notices related to this dependency can be found in the directory `com.google.auth.google-auth-library-credentials-1.28.0`. +Copyright notices related to this dependency can be found in the directory `com.google.auth.google-auth-library-credentials-1.30.1`. 'google-auth-library-oauth2-http', licensed under the BSD New license, is distributed with the Google_Api. The license file can be found at `licenses/BSD-3-Clause`. -Copyright notices related to this dependency can be found in the directory `com.google.auth.google-auth-library-oauth2-http-1.28.0`. +Copyright notices related to this dependency can be found in the directory `com.google.auth.google-auth-library-oauth2-http-1.30.1`. 'auto-value-annotations', licensed under the Apache 2.0, is distributed with the Google_Api. @@ -93,7 +93,7 @@ Copyright notices related to this dependency can be found in the directory `com. 'error_prone_annotations', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.errorprone.error_prone_annotations-2.33.0`. +Copyright notices related to this dependency can be found in the directory `com.google.errorprone.error_prone_annotations-2.36.0`. 'failureaccess', licensed under the The Apache Software License, Version 2.0, is distributed with the Google_Api. @@ -103,22 +103,22 @@ Copyright notices related to this dependency can be found in the directory `com. 'guava', licensed under the Apache License, Version 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.guava.guava-33.3.1-jre`. +Copyright notices related to this dependency can be found in the directory `com.google.guava.guava-33.4.0-jre`. 'google-http-client', licensed under the The Apache Software License, Version 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.http-client.google-http-client-1.45.0`. +Copyright notices related to this dependency can be found in the directory `com.google.http-client.google-http-client-1.45.3`. 'google-http-client-apache-v2', licensed under the The Apache Software License, Version 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.http-client.google-http-client-apache-v2-1.42.3`. +Copyright notices related to this dependency can be found in the directory `com.google.http-client.google-http-client-apache-v2-1.45.2`. 'google-http-client-gson', licensed under the The Apache Software License, Version 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.http-client.google-http-client-gson-1.45.0`. +Copyright notices related to this dependency can be found in the directory `com.google.http-client.google-http-client-gson-1.45.3`. 'j2objc-annotations', licensed under the Apache License, Version 2.0, is distributed with the Google_Api. @@ -128,7 +128,7 @@ Copyright notices related to this dependency can be found in the directory `com. 'google-oauth-client', licensed under the The Apache Software License, Version 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `com.google.oauth-client.google-oauth-client-1.34.1`. +Copyright notices related to this dependency can be found in the directory `com.google.oauth-client.google-oauth-client-1.36.0`. 'protobuf-java', licensed under the BSD-3-Clause, is distributed with the Google_Api. @@ -158,77 +158,77 @@ Copyright notices related to this dependency can be found in the directory `comm 'grpc-alts', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-alts-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-alts-1.69.0`. 'grpc-api', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-api-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-api-1.69.0`. 'grpc-auth', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-auth-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-auth-1.69.0`. 'grpc-context', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-context-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-context-1.69.0`. 'grpc-core', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-core-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-core-1.69.0`. 'grpc-googleapis', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-googleapis-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-googleapis-1.69.0`. 'grpc-grpclb', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-grpclb-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-grpclb-1.69.0`. 'grpc-inprocess', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-inprocess-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-inprocess-1.69.0`. 'grpc-netty-shaded', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-netty-shaded-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-netty-shaded-1.69.0`. 'grpc-protobuf', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-protobuf-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-protobuf-1.69.0`. 'grpc-protobuf-lite', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-protobuf-lite-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-protobuf-lite-1.69.0`. 'grpc-services', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-services-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-services-1.69.0`. 'grpc-stub', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-stub-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-stub-1.69.0`. 'grpc-util', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-util-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-util-1.69.0`. 'grpc-xds', licensed under the Apache 2.0, is distributed with the Google_Api. The license file can be found at `licenses/APACHE2.0`. -Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-xds-1.67.1`. +Copyright notices related to this dependency can be found in the directory `io.grpc.grpc-xds-1.69.0`. 'opencensus-api', licensed under the The Apache License, Version 2.0, is distributed with the Google_Api. @@ -263,7 +263,7 @@ Copyright notices related to this dependency can be found in the directory `org. 'checker-qual', licensed under the The MIT License, is distributed with the Google_Api. The license information can be found along with the copyright notices. -Copyright notices related to this dependency can be found in the directory `org.checkerframework.checker-qual-3.47.0`. +Copyright notices related to this dependency can be found in the directory `org.checkerframework.checker-qual-3.48.3`. 'animal-sniffer-annotations', licensed under the MIT license, is distributed with the Google_Api. diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-admin-0.62.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-admin-0.62.0/NOTICES deleted file mode 100644 index 962950013963..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-admin-0.62.0/NOTICES +++ /dev/null @@ -1 +0,0 @@ -Copyright 2024 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1alpha-0.63.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-admin-0.66.0/NOTICES similarity index 89% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1alpha-0.63.0/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-admin-0.66.0/NOTICES index 691a4d40d382..7e8885cd4599 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1alpha-0.63.0/NOTICES +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-admin-0.66.0/NOTICES @@ -1,17 +1,15 @@ -/* - * Copyright 2023 Google LLC - * - * 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 - * - * https://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. +/* + * Copyright 2025 Google LLC + * + * 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 + * + * https://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. */ - -Copyright 2024 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-data-0.63.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-data-0.63.0/NOTICES deleted file mode 100644 index 962950013963..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-data-0.63.0/NOTICES +++ /dev/null @@ -1 +0,0 @@ -Copyright 2024 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1beta-0.63.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-data-0.67.0/NOTICES similarity index 89% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1beta-0.63.0/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-data-0.67.0/NOTICES index 691a4d40d382..7e8885cd4599 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1beta-0.63.0/NOTICES +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.analytics.google-analytics-data-0.67.0/NOTICES @@ -1,17 +1,15 @@ -/* - * Copyright 2023 Google LLC - * - * 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 - * - * https://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. +/* + * Copyright 2025 Google LLC + * + * 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 + * + * https://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. */ - -Copyright 2024 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api-client.google-api-client-2.2.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api-client.google-api-client-2.7.1/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api-client.google-api-client-2.2.0/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api-client.google-api-client-2.7.1/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.api-common-2.38.0/BSD-3-LICENSE.txt b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.api-common-2.42.1/BSD-3-LICENSE.txt similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.api-common-2.38.0/BSD-3-LICENSE.txt rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.api-common-2.42.1/BSD-3-LICENSE.txt diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.api-common-2.38.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.api-common-2.42.1/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.api-common-2.38.0/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.api-common-2.42.1/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-2.55.0/BSD-3-LICENSE.txt b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-2.59.1/BSD-3-LICENSE.txt similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-2.55.0/BSD-3-LICENSE.txt rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-2.59.1/BSD-3-LICENSE.txt diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-2.55.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-2.59.1/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-2.55.0/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-2.59.1/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-grpc-2.59.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-grpc-2.59.1/NOTICES new file mode 100644 index 000000000000..2a10a99d7738 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-grpc-2.59.1/NOTICES @@ -0,0 +1,209 @@ +/* + * Copyright 2016 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2017 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2018 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2019 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2020 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2021 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2022 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-httpjson-2.55.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-httpjson-2.55.0/NOTICES deleted file mode 100644 index 9f56992b00c7..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-httpjson-2.55.0/NOTICES +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2023 Google LLC - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google LLC nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - -Copyright 2017 Google LLC - -Copyright 2018 Google LLC - -Copyright 2020 Google LLC - -Copyright 2021 Google LLC - -Copyright 2022 Google LLC - -Redistributions of source code must retain the above copyright - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - -copyright notice, this list of conditions and the following disclaimer diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-httpjson-2.59.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-httpjson-2.59.1/NOTICES new file mode 100644 index 000000000000..d7b2d8537463 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.gax-httpjson-2.59.1/NOTICES @@ -0,0 +1,179 @@ +/* + * Copyright 2017 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2018 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2020 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2021 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2022 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2023 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-admin-v1alpha-0.66.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-admin-v1alpha-0.66.0/NOTICES new file mode 100644 index 000000000000..d1ff258c4139 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-admin-v1alpha-0.66.0/NOTICES @@ -0,0 +1,3 @@ +Copyright 2024 Google LLC + +Copyright 2025 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-admin-v1beta-0.66.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-admin-v1beta-0.66.0/NOTICES new file mode 100644 index 000000000000..d1ff258c4139 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-admin-v1beta-0.66.0/NOTICES @@ -0,0 +1,3 @@ +Copyright 2024 Google LLC + +Copyright 2025 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1alpha-0.67.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1alpha-0.67.0/NOTICES new file mode 100644 index 000000000000..d1ff258c4139 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1alpha-0.67.0/NOTICES @@ -0,0 +1,3 @@ +Copyright 2024 Google LLC + +Copyright 2025 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1beta-0.67.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1beta-0.67.0/NOTICES new file mode 100644 index 000000000000..d1ff258c4139 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-analytics-data-v1beta-0.67.0/NOTICES @@ -0,0 +1,3 @@ +Copyright 2024 Google LLC + +Copyright 2025 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-common-protos-2.46.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-common-protos-2.46.0/NOTICES deleted file mode 100644 index 962950013963..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-common-protos-2.46.0/NOTICES +++ /dev/null @@ -1 +0,0 @@ -Copyright 2024 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-common-protos-2.50.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-common-protos-2.50.1/NOTICES new file mode 100644 index 000000000000..d1ff258c4139 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.api.grpc.proto-google-common-protos-2.50.1/NOTICES @@ -0,0 +1,3 @@ +Copyright 2024 Google LLC + +Copyright 2025 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.apis.google-api-services-sheets-v4-rev20250106-2.0.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.apis.google-api-services-sheets-v4-rev20250106-2.0.0/NOTICES new file mode 100644 index 000000000000..533c1bdf0474 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.apis.google-api-services-sheets-v4-rev20250106-2.0.0/NOTICES @@ -0,0 +1,2 @@ +Copyright 2011-2025 Google. All rights reserved. + diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.apis.google-api-services-sheets-v4-rev612-1.25.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.apis.google-api-services-sheets-v4-rev612-1.25.0/NOTICES deleted file mode 100644 index 894ad696748f..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.apis.google-api-services-sheets-v4-rev612-1.25.0/NOTICES +++ /dev/null @@ -1 +0,0 @@ -Copyright 2010 Google Inc. diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-credentials-1.28.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-credentials-1.28.0/NOTICES deleted file mode 100644 index dd8b99806184..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-credentials-1.28.0/NOTICES +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015, Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -Copyright 2016, Google Inc. All rights reserved. - -Copyright 2022 Google LLC - -Copyright 2024 Google LLC - -Copyright 2024, Google Inc. All rights reserved. diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-credentials-1.30.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-credentials-1.30.1/NOTICES new file mode 100644 index 000000000000..d043307c419e --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-credentials-1.30.1/NOTICES @@ -0,0 +1,154 @@ +/* + * Copyright 2015, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2016, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2022 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2024 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2024, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-oauth2-http-1.30.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-oauth2-http-1.30.1/NOTICES new file mode 100644 index 000000000000..9f107c8164f5 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-oauth2-http-1.30.1/NOTICES @@ -0,0 +1,435 @@ +/* + * Copyright 2015, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2016, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2017, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2018, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2019, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2019, Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2020, Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2021 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2022 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2022, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2023 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2023, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2024 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright 2024, Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +Redistributions of source code must retain the above copyright diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.errorprone.error_prone_annotations-2.33.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.errorprone.error_prone_annotations-2.36.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.errorprone.error_prone_annotations-2.33.0/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.errorprone.error_prone_annotations-2.36.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.guava.guava-33.3.1-jre/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.guava.guava-33.4.0-jre/NOTICES similarity index 76% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.guava.guava-33.3.1-jre/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.guava.guava-33.4.0-jre/NOTICES index ed98adc0ff15..92910343b56e 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.guava.guava-33.3.1-jre/NOTICES +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.guava.guava-33.4.0-jre/NOTICES @@ -21,13 +21,25 @@ * the License. */ +/* + * Copyright (C) 2006 The Guava Authors + * + * 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. + */ + /* * MurmurHash3 was written by Austin Appleby, and is placed in the public * domain. The author hereby disclaims copyright to this source code. */ -Copyright (C) 2006 The Guava Authors - Copyright (C) 2007 The Guava Authors Copyright (C) 2008 The Guava Authors diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-1.45.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-1.45.0/NOTICES deleted file mode 100644 index 4c4519f9b61f..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-1.45.0/NOTICES +++ /dev/null @@ -1,3 +0,0 @@ -Copyright (c) 2010 Google Inc. - -Copyright 2012 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-1.45.3/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-1.45.3/NOTICES new file mode 100644 index 000000000000..f8abf04b14f3 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-1.45.3/NOTICES @@ -0,0 +1,33 @@ +/* + * Copyright (c) 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. + */ + +Copyright (c) 2010 Google Inc. + +Copyright (c) 2010 Google Inc.J + +Copyright (c) 2012 Google Inc. + +Copyright (c) 2013 Google Inc. + +Copyright (c) 2014 Google Inc. + +Copyright (c) 2018 Google Inc. + +Copyright 2012 Google LLC + +Copyright 2012 Google LLC. + +Copyright 2019 Google LLC + +Copyright 2020 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-apache-v2-1.45.2/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-apache-v2-1.45.2/NOTICES new file mode 100644 index 000000000000..7a1e6742bee8 --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-apache-v2-1.45.2/NOTICES @@ -0,0 +1,13 @@ +/* + * Copyright 2019 Google LLC + * + * 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/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-gson-1.45.3/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-gson-1.45.3/NOTICES new file mode 100644 index 000000000000..25229ac5950e --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.http-client.google-http-client-gson-1.45.3/NOTICES @@ -0,0 +1,13 @@ +/* + * Copyright (c) 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/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.oauth-client.google-oauth-client-1.34.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.oauth-client.google-oauth-client-1.34.1/NOTICES deleted file mode 100644 index f375483ba2a8..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.oauth-client.google-oauth-client-1.34.1/NOTICES +++ /dev/null @@ -1,3 +0,0 @@ -Copyright (c) 2010 Google Inc. - -Copyright 2021 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-oauth2-http-1.28.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.oauth-client.google-oauth-client-1.36.0/NOTICES similarity index 67% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-oauth2-http-1.28.0/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.oauth-client.google-oauth-client-1.36.0/NOTICES index d397837e2030..1ad760f54e37 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.auth.google-auth-library-oauth2-http-1.28.0/NOTICES +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/com.google.oauth-client.google-oauth-client-1.36.0/NOTICES @@ -1,5 +1,19 @@ /* - * Copyright 2016, Google Inc. All rights reserved. + * Copyright (c) 2010 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. + */ + +/* + * Copyright 2022, Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -29,26 +43,10 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -Copyright 2015, Google Inc. All rights reserved. - -Copyright 2017, Google Inc. All rights reserved. +Copyright (c) 2011 Google Inc. -Copyright 2018, Google Inc. All rights reserved. +Copyright (c) 2012 Google Inc. -Copyright 2019, Google Inc. All rights reserved. - -Copyright 2019, Google LLC - -Copyright 2020, Google LLC +Copyright (c) 2013 Google Inc. Copyright 2021 Google LLC - -Copyright 2022 Google LLC - -Copyright 2022, Google Inc. All rights reserved. - -Copyright 2023 Google LLC - -Copyright 2023, Google Inc. All rights reserved. - -Copyright 2024 Google LLC diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-alts-1.69.0/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-alts-1.69.0/NOTICES new file mode 100644 index 000000000000..81cf8ff0452e --- /dev/null +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-alts-1.69.0/NOTICES @@ -0,0 +1,37 @@ +/* + * Copyright 2018 The gRPC Authors + * + * 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. + */ + +/* + * Copyright 2024 The gRPC Authors + * + * 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. + */ + +Copyright 2019 The gRPC Authors + +Copyright 2020 The gRPC Authors + +Copyright 2021 The gRPC Authors diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-api-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-api-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-api-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-api-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-auth-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-auth-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-auth-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-auth-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-context-1.67.1/AUTHORS b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-context-1.69.0/AUTHORS similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-context-1.67.1/AUTHORS rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-context-1.69.0/AUTHORS diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-context-1.67.1/NOTICE.txt b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-context-1.69.0/NOTICE.txt similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-context-1.67.1/NOTICE.txt rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-context-1.69.0/NOTICE.txt diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-core-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-core-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-core-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-core-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-googleapis-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-googleapis-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-googleapis-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-googleapis-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-grpclb-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-grpclb-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-grpclb-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-grpclb-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-inprocess-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-inprocess-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-inprocess-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-inprocess-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-netty-shaded-1.67.1/AUTHORS b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-netty-shaded-1.69.0/AUTHORS similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-netty-shaded-1.67.1/AUTHORS rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-netty-shaded-1.69.0/AUTHORS diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-netty-shaded-1.67.1/NOTICE.txt b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-netty-shaded-1.69.0/NOTICE.txt similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-netty-shaded-1.67.1/NOTICE.txt rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-netty-shaded-1.69.0/NOTICE.txt diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-lite-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-lite-1.67.1/NOTICES deleted file mode 100644 index 8e9993638b0b..000000000000 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-lite-1.67.1/NOTICES +++ /dev/null @@ -1,3 +0,0 @@ -Copyright 2014 The gRPC Authors - -Copyright 2017 The gRPC Authors diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-alts-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-lite-1.69.0/NOTICES similarity index 80% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-alts-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-lite-1.69.0/NOTICES index 85ef97f15a3a..7bbf9d27fcef 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-alts-1.67.1/NOTICES +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-protobuf-lite-1.69.0/NOTICES @@ -1,5 +1,5 @@ /* - * Copyright 2018 The gRPC Authors + * Copyright 2014 The gRPC Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,8 +14,4 @@ * limitations under the License. */ -Copyright 2019 The gRPC Authors - -Copyright 2020 The gRPC Authors - -Copyright 2021 The gRPC Authors +Copyright 2017 The gRPC Authors diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-services-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-services-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-services-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-services-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-stub-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-stub-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-stub-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-stub-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-util-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-util-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-util-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-util-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-xds-1.67.1/NOTICES b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-xds-1.69.0/NOTICES similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-xds-1.67.1/NOTICES rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/io.grpc.grpc-xds-1.69.0/NOTICES diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/org.checkerframework.checker-qual-3.47.0/LICENSE.txt b/distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/org.checkerframework.checker-qual-3.48.3/LICENSE.txt similarity index 100% rename from distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/org.checkerframework.checker-qual-3.47.0/LICENSE.txt rename to distribution/lib/Standard/Google_Api/0.0.0-dev/THIRD-PARTY/org.checkerframework.checker-qual-3.48.3/LICENSE.txt diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/docs/api/Google_Sheets.md b/distribution/lib/Standard/Google_Api/0.0.0-dev/docs/api/Google_Sheets.md index e3a5ce0f1f63..6aa04e6bce3c 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/docs/api/Google_Sheets.md +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/docs/api/Google_Sheets.md @@ -1,6 +1,8 @@ ## Enso Signatures 1.0 ## module Standard.Google_Api.Google_Sheets +- type Google_Api_Error + - Error message:Standard.Base.Any.Any cause:Standard.Base.Any.Any - type Google_Sheets - Service java_service:Standard.Base.Any.Any - get_table self sheet_id:Standard.Base.Any.Any sheet_range:Standard.Base.Any.Any -> Standard.Base.Any.Any - - initialize secret_file:Standard.Base.Any.Any -> Standard.Base.Any.Any + - initialize credentials:Standard.Base.Any.Any -> Standard.Base.Any.Any diff --git a/distribution/lib/Standard/Google_Api/0.0.0-dev/src/Google_Sheets.enso b/distribution/lib/Standard/Google_Api/0.0.0-dev/src/Google_Sheets.enso index 81fad0ef566b..ce6f5960f248 100644 --- a/distribution/lib/Standard/Google_Api/0.0.0-dev/src/Google_Sheets.enso +++ b/distribution/lib/Standard/Google_Api/0.0.0-dev/src/Google_Sheets.enso @@ -3,15 +3,14 @@ import Standard.Base.Data.Array_Proxy.Array_Proxy import Standard.Base.Metadata.Display from Standard.Base.Metadata import make_single_choice, Widget from Standard.Base.Metadata.Widget import Single_Choice, Vector_Editor +from Standard.Base.Enso_Cloud.Enso_Secret import as_credential_reference from Standard.Table import Table -polyglot java import com.google.api.client.googleapis.auth.oauth2.GoogleCredential -polyglot java import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport -polyglot java import com.google.api.client.json.gson.GsonFactory -polyglot java import com.google.api.services.sheets.v4.Sheets -polyglot java import com.google.api.services.sheets.v4.SheetsScopes -polyglot java import java.util.Collections +polyglot java import java.io.IOException + +polyglot java import org.enso.google.GoogleSheetsHelpers +polyglot java import org.enso.google.WrappedGoogleCredentials type Google_Sheets ## PRIVATE @@ -21,18 +20,12 @@ type Google_Sheets Initializes the Google Sheets instance using the given credentials file. Arguments: - - secret_file: a file containing Google Service Account credentials to use to + - credentials: a Cloud secret or a file containing Google Service Account credentials to use to access Google services. The credentials file can be downloaded from the Google Admin Console when generating a key. - initialize : File -> Google_Sheets - initialize secret_file = - app_name = 'Enso' - credential = secret_file.with_input_stream [File_Access.Read] stream-> - stream.with_java_stream is-> - GoogleCredential.fromStream is . createScoped (Collections.singleton SheetsScopes.SPREADSHEETS) - http_transport = GoogleNetHttpTransport.newTrustedTransport - json_factory = GsonFactory.getDefaultInstance - service = Sheets.Builder.new http_transport json_factory credential . setApplicationName app_name . build + initialize : File|Enso_Secret -> Google_Sheets + initialize credentials = + service = GoogleSheetsHelpers.createService (_wrap_credentials credentials) Google_Sheets.Service service ## ICON data_input @@ -45,8 +38,28 @@ type Google_Sheets `'Sheet1!A1:B7'`. get_table : Text -> Text -> Table get_table self sheet_id sheet_range = - request = self.java_service.spreadsheets.values.get sheet_id sheet_range . setMajorDimension 'COLUMNS' . setValueRenderOption 'UNFORMATTED_VALUE' - response = request.execute - values = Vector.from_polyglot_array response.getValues - columned = values.map v-> [v.first, v.drop 1] - Table.new columned + values = _handle_exceptions <| + self.java_service.getSheetRange sheet_id sheet_range + # The first entry is the column name (A, B, ...) and the rest are the values. + column_vectors = values.map v-> [v.first, v.drop 1] + # The column lengths may not necessarily be the same, but Table.new expects the same lengths, so we normalize: + row_count = column_vectors.map (p-> p.second.length) . compute ..Maximum + normalized = column_vectors.map p-> + [p.first, p.second.pad row_count Nothing] + Table.new normalized + +type Google_Api_Error + Error message cause + +private _handle_exceptions ~action = + Panic.catch IOException action caught_panic-> + Error.throw (Google_Api_Error.Error caught_panic.payload.to_text caught_panic.payload) + +private _wrap_credentials credential:File|Enso_Secret = + case credential of + secret : Enso_Secret -> + WrappedGoogleCredentials.SecretCredentials.new (as_credential_reference secret) + secret_file : File -> + secret_file.with_input_stream [File_Access.Read] stream-> + stream.with_java_stream java_input_stream-> + WrappedGoogleCredentials.LocalFileCredentials.fromStream java_input_stream diff --git a/distribution/lib/Standard/Snowflake/0.0.0-dev/docs/api/Connection/Snowflake_Details.md b/distribution/lib/Standard/Snowflake/0.0.0-dev/docs/api/Connection/Snowflake_Details.md index fcc549315cb7..12064cdf72fd 100644 --- a/distribution/lib/Standard/Snowflake/0.0.0-dev/docs/api/Connection/Snowflake_Details.md +++ b/distribution/lib/Standard/Snowflake/0.0.0-dev/docs/api/Connection/Snowflake_Details.md @@ -1,8 +1,7 @@ ## Enso Signatures 1.0 ## module Standard.Snowflake.Connection.Snowflake_Details - type Snowflake_Details - - Snowflake account:Standard.Base.Data.Text.Text= credentials:(Standard.Database.Connection.Credentials.Credentials|Standard.Snowflake.Connection.Key_Pair_Credentials.Key_Pair_Credentials)= database:Standard.Base.Data.Text.Text= schema:Standard.Base.Data.Text.Text= warehouse:Standard.Base.Data.Text.Text= + - Snowflake account:Standard.Base.Data.Text.Text= credentials:(Standard.Database.Connection.Credentials.Credentials|Standard.Snowflake.Connection.Key_Pair_Credentials.Key_Pair_Credentials|Standard.Base.Enso_Cloud.Enso_Secret.Enso_Secret)= database:Standard.Base.Data.Text.Text= schema:Standard.Base.Data.Text.Text= warehouse:Standard.Base.Data.Text.Text= - connect self options:Standard.Base.Any.Any allow_data_links:Standard.Base.Data.Boolean.Boolean= -> Standard.Base.Any.Any - - jdbc_properties self -> Standard.Base.Any.Any - jdbc_url self -> Standard.Base.Any.Any - resolve constructor:Standard.Base.Any.Any -> Standard.Base.Any.Any diff --git a/distribution/lib/Standard/Snowflake/0.0.0-dev/docs/api/Snowflake_Connection.md b/distribution/lib/Standard/Snowflake/0.0.0-dev/docs/api/Snowflake_Connection.md index 2e105e6cee91..f8b64423c77b 100644 --- a/distribution/lib/Standard/Snowflake/0.0.0-dev/docs/api/Snowflake_Connection.md +++ b/distribution/lib/Standard/Snowflake/0.0.0-dev/docs/api/Snowflake_Connection.md @@ -1,10 +1,8 @@ ## Enso Signatures 1.0 ## module Standard.Snowflake.Snowflake_Connection - type Snowflake_Connection - - Value connection:Standard.Base.Any.Any make_new:Standard.Base.Any.Any - base_connection self -> Standard.Base.Any.Any - close self -> Standard.Base.Any.Any - - create url:Standard.Base.Any.Any properties:Standard.Base.Any.Any make_new:Standard.Base.Any.Any data_link_setup:Standard.Base.Any.Any -> Standard.Base.Any.Any - create_table self table_name:Standard.Base.Data.Text.Text structure:(Standard.Base.Any.Any|Standard.Database.DB_Table.DB_Table|Standard.Table.Table.Table) primary_key:(Standard.Base.Any.Any|Standard.Base.Nothing.Nothing)= temporary:Standard.Base.Data.Boolean.Boolean= allow_existing:Standard.Base.Data.Boolean.Boolean= on_problems:Standard.Base.Errors.Problem_Behavior.Problem_Behavior= -> Standard.Base.Any.Any - database self -> Standard.Base.Any.Any - databases self -> Standard.Base.Any.Any diff --git a/distribution/lib/Standard/Snowflake/0.0.0-dev/src/Connection/Snowflake_Details.enso b/distribution/lib/Standard/Snowflake/0.0.0-dev/src/Connection/Snowflake_Details.enso index eef1a4d2278e..86d9f9c60750 100644 --- a/distribution/lib/Standard/Snowflake/0.0.0-dev/src/Connection/Snowflake_Details.enso +++ b/distribution/lib/Standard/Snowflake/0.0.0-dev/src/Connection/Snowflake_Details.enso @@ -2,10 +2,8 @@ from Standard.Base import all import Standard.Base.Data.Numbers.Number_Parse_Error import Standard.Base.Errors.Common.Missing_Argument import Standard.Base.Errors.Common.Type_Error -import Standard.Base.Errors.Illegal_Argument.Illegal_Argument import Standard.Base.Errors.Illegal_State.Illegal_State import Standard.Base.Metadata.Widget.Text_Input -from Standard.Base.Enso_Cloud.Enso_Secret import as_hideable_value import Standard.Database.Connection.Connection_Options.Connection_Options import Standard.Database.Connection.Credentials.Credentials @@ -17,7 +15,6 @@ import project.Connection.Widgets import project.Snowflake_Connection.Snowflake_Connection polyglot java import net.snowflake.client.jdbc.SnowflakeDriver -polyglot java import org.enso.base.enso_cloud.InterpretAsPrivateKey type Snowflake_Details ## Connect to a Snowflake database. @@ -25,12 +22,14 @@ type Snowflake_Details Arguments: - account: The name of the account to connect to. - credentials: The credentials to use for the connection. + This can either be username/password pair, a `Key_Pair_Credentials` + for private key authentication or a credential created in the dashboard. - database: The name of the database to connect to. - schema: The name of the schema to connect to. - warehouse: The name of the warehouse to use. @account (Text_Input display=..Always) @credentials Widgets.password_or_keypair_widget - Snowflake (account:Text=(Missing_Argument.throw "account")) (credentials:Credentials|Key_Pair_Credentials=(Missing_Argument.throw "credentials")) database:Text="SNOWFLAKE" schema:Text="PUBLIC" warehouse:Text="" + Snowflake (account:Text=(Missing_Argument.throw "account")) (credentials:Credentials|Key_Pair_Credentials|Enso_Secret=(Missing_Argument.throw "credentials")) database:Text="SNOWFLAKE" schema:Text="PUBLIC" warehouse:Text="" ## PRIVATE Attempt to resolve the constructor. @@ -47,14 +46,14 @@ type Snowflake_Details connect self options (allow_data_links : Boolean = True) = data_link_setup = if allow_data_links then Data_Link_Setup.Available (create_data_link_structure self) else Data_Link_Setup.already_a_data_link - properties = options.merge self.jdbc_properties + properties = options.merge self.common_jdbc_properties ## Cannot use default argument values as gets in an infinite loop if you do. make_new database schema warehouse = Snowflake_Details.Snowflake self.account self.credentials (database.if_nothing self.database) (schema.if_nothing self.schema) (warehouse.if_nothing self.warehouse) . connect options allow_data_links _enhance_connection_errors self <| - Snowflake_Connection.create self.jdbc_url properties make_new data_link_setup + Snowflake_Connection.create self.jdbc_url properties self.credentials make_new data_link_setup ## PRIVATE Provides the jdbc url for the connection. @@ -63,37 +62,20 @@ type Snowflake_Details 'jdbc:snowflake://' + self.account + ".snowflakecomputing.com" ## PRIVATE - Provides the properties for the connection. - jdbc_properties : Vector (Pair Text Text) - jdbc_properties self = + Provides common properties for the connection, excluding the ones related to credentials. + private common_jdbc_properties self -> Vector (Pair Text Text) = ## If Arrow dependency is to be avoided (https://community.snowflake.com/s/article/SAP-BW-Java-lang-NoClassDefFoundError-for-Apache-arrow) ## [Pair.new 'jdbc_query_result_format' 'json'] ## should be prepended to properties. That would make it fallback to plain `json`. account = [Pair.new 'account' self.account] - credentials = case self.credentials of - Credentials.Username_And_Password username password -> [Pair.new 'user' username, Pair.new 'password' password] - Key_Pair_Credentials.Key_Pair username private_key passphrase -> - key_part = case private_key of - local_file : File -> - passphrase_part = if passphrase != Nothing then [Pair.new 'private_key_file_pwd' passphrase] else [] - [Pair.new 'private_key_file' local_file.absolute.path] + passphrase_part - _ : Enso_File -> - Error.throw (Illegal_Argument.Error "Currently only local files can be used as private keys. In Cloud, consider using a Secret instead of a file.") - secret : Enso_Secret -> - if passphrase != Nothing then - Error.throw (Illegal_Argument.Error "Passphrase is not applicable when using a secret as a private key.") - secret_as_private_key = InterpretAsPrivateKey.new (as_hideable_value secret) - [Pair.new 'privateKey' secret_as_private_key] - [Pair.new 'user' username] + key_part - database = [Pair.new 'db' self.database] schema = [Pair.new 'schema' self.schema] warehouse = if self.warehouse=="" then [] else [Pair.new 'warehouse' self.warehouse] ## Control the format of TIMESTAMP and TIME fields formats = [Pair.new "TIME_OUTPUT_FORMAT" "HH24:MI:SS.FF9", Pair.new "TIMESTAMP_OUTPUT_FORMAT" "YYYY-MM-DD HH24:MI:SS.FF9 TZHTZM", Pair.new "TIMESTAMP_NTZ_OUTPUT_FORMAT" "YYYY-MM-DD HH24:MI:SS.FF9", Pair.new "TIMESTAMP_LTZ_OUTPUT_FORMAT" "YYYY-MM-DD HH24:MI:SS.FF9"] - account + credentials + database + schema + warehouse + formats + account + database + schema + warehouse + formats ## PRIVATE private create_data_link_structure details:Snowflake_Details data_link_location:Enso_File -> JS_Object = diff --git a/distribution/lib/Standard/Snowflake/0.0.0-dev/src/Snowflake_Connection.enso b/distribution/lib/Standard/Snowflake/0.0.0-dev/src/Snowflake_Connection.enso index 49d1f2b74723..a2755efc7206 100644 --- a/distribution/lib/Standard/Snowflake/0.0.0-dev/src/Snowflake_Connection.enso +++ b/distribution/lib/Standard/Snowflake/0.0.0-dev/src/Snowflake_Connection.enso @@ -1,13 +1,16 @@ from Standard.Base import all +import Standard.Base.Errors.Illegal_Argument.Illegal_Argument import Standard.Base.Metadata.Display from Standard.Base.Metadata.Choice import Option from Standard.Base.Metadata.Widget import Single_Choice +from Standard.Base.Enso_Cloud.Enso_Secret import as_hideable_value, as_credential_reference import Standard.Table.Rows_To_Read.Rows_To_Read from Standard.Table import Table import Standard.Database.Column_Description.Column_Description import Standard.Database.Connection.Connection.Connection +import Standard.Database.Connection.Credentials.Credentials import Standard.Database.DB_Table.DB_Table import Standard.Database.Internal.Common.Connections_Helpers import Standard.Database.Internal.Connection.Entity_Naming_Properties.Entity_Naming_Properties @@ -19,8 +22,12 @@ from Standard.Database.Connection.Connection import make_database_selector, make from Standard.Database.Errors import SQL_Error, Table_Already_Exists, Table_Not_Found from Standard.Database.Internal.Upload.Helpers.Default_Arguments import first_column_name_in_structure +import project.Connection.Key_Pair_Credentials.Key_Pair_Credentials import project.Internal.Snowflake_Dialect +polyglot java import org.enso.base.enso_cloud.InterpretAsPrivateKey +polyglot java import org.enso.snowflake.SnowflakeCloudCredentials + type Snowflake_Connection ## PRIVATE @@ -29,11 +36,23 @@ type Snowflake_Connection Arguments: - url: The URL to connect to. - properties: A vector of properties for the connection. + - credentials: Credentials for the connection - make_new: A function that returns a new connection. - data_link_setup: the setup for saving the connection as a data link. - create : Text -> Vector -> (Text -> Text -> Snowflake_Connection) -> Data_Link_Setup -> Snowflake_Connection - create url properties make_new data_link_setup = - jdbc_connection = JDBC_Connection.create url properties + private create url:Text properties:Vector credentials:Credentials|Key_Pair_Credentials|Enso_Secret make_new:(Text -> Text -> Snowflake_Connection) data_link_setup:Data_Link_Setup -> Snowflake_Connection = + jdbc_connection = case credentials of + # Special handling for OAuth credentials stored in the cloud + cloud_credentials : Enso_Secret -> + base_properties = JDBC_Connection.properties_as_java_props properties + raw_java_connection = SnowflakeCloudCredentials.makeConnection url base_properties (as_credential_reference cloud_credentials) + JDBC_Connection.from_java raw_java_connection + _ -> + auth_properties = auth_jdbc_properties credentials + clashing = (Hashset.from_vector (properties.map .first)) . intersection (Hashset.from_vector (auth_properties.map .first)) + if clashing.not_empty then + Panic.throw (Illegal_Argument.Error "The properties cannot contain "+(clashing.to_vector .join ", ")+" as they are already provided in the credentials.") + JDBC_Connection.create url (properties + auth_properties) + ## As long as names are quoted, the Snowflake SQL dialect is case sensitive. Our generator always quotes identifiers, so we can rely on the case sensitivity. This is the same as in Postgres. @@ -47,7 +66,7 @@ type Snowflake_Connection Arguments: - connection: the underlying connection. - make_new: a function that returns a new connection. - Value connection make_new + private Value connection make_new ## ICON close Closes the connection releasing the underlying database resources @@ -330,3 +349,22 @@ type Snowflake_Connection to_js_object self = additional_visualization_fields = Connections_Helpers.get_data_viz_pairs JS_Object.from_pairs <| [["type", "SQLite_Connection"], ["links", self.connection.tables.at "Name" . to_vector]] + additional_visualization_fields + +private auth_jdbc_properties credentials = case credentials of + Credentials.Username_And_Password username password -> + [Pair.new 'user' username, Pair.new 'password' password] + Key_Pair_Credentials.Key_Pair username private_key passphrase -> + key_part = case private_key of + local_file : File -> + passphrase_part = if passphrase != Nothing then [Pair.new 'private_key_file_pwd' passphrase] else [] + [Pair.new 'private_key_file' local_file.absolute.path] + passphrase_part + _ : Enso_File -> + Error.throw (Illegal_Argument.Error "Currently only local files can be used as private keys. In Cloud, consider using a Secret instead of a file.") + secret : Enso_Secret -> + if passphrase != Nothing then + Error.throw (Illegal_Argument.Error "Passphrase is not applicable when using a secret as a private key.") + secret_as_private_key = InterpretAsPrivateKey.new (as_hideable_value secret) + [Pair.new 'privateKey' secret_as_private_key] + [Pair.new 'user' username] + key_part + _ : Enso_Secret -> + Panic.throw (Illegal_Argument.Error "Cannot extract `auth_jdbc_properties` from a Cloud Credential. This is a bug in Snowflake library.") diff --git a/engine/runtime/src/main/java/org/enso/interpreter/runtime/ModuleSources.java b/engine/runtime/src/main/java/org/enso/interpreter/runtime/ModuleSources.java index 19ae4bea4941..6f6e2cd13878 100644 --- a/engine/runtime/src/main/java/org/enso/interpreter/runtime/ModuleSources.java +++ b/engine/runtime/src/main/java/org/enso/interpreter/runtime/ModuleSources.java @@ -124,6 +124,9 @@ private static void alternativeFile(Source.SourceBuilder b, TruffleFile file) { return; } var builtDistribution = libVersion.getParent().getParent(); + if (builtDistribution == null) { + return; + } if ("built-distribution".equals(builtDistribution.getName())) { var repositoryRoot = builtDistribution.getParent(); var distRoot = repositoryRoot.resolve("distribution").resolve("lib"); diff --git a/std-bits/base/src/main/java/org/enso/base/enso_cloud/ExternalLibraryCredentialHelper.java b/std-bits/base/src/main/java/org/enso/base/enso_cloud/ExternalLibraryCredentialHelper.java new file mode 100644 index 000000000000..34209a640298 --- /dev/null +++ b/std-bits/base/src/main/java/org/enso/base/enso_cloud/ExternalLibraryCredentialHelper.java @@ -0,0 +1,174 @@ +package org.enso.base.enso_cloud; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.time.ZonedDateTime; +import java.time.format.DateTimeParseException; +import java.util.List; + +/** + * An entry point allowing external libraries to access Enso credentials. + * + *
It will only allow access from trusted code locations.
+ */
+public class ExternalLibraryCredentialHelper {
+ public record CredentialReference(String secretId, String serviceName) {
+ public void expectForService(String expectedServiceName) {
+ if (!serviceName.equals(expectedServiceName)) {
+ throw new IllegalArgumentException(
+ "Expected credentials for " + expectedServiceName + ", but was: " + serviceName + ".");
+ }
+ }
+ }
+
+ public record AccessToken(String token, ZonedDateTime expirationDate) {}
+
+ public record RefreshToken(String token, ZonedDateTime expirationDate, JsonNode metadata) {
+ private static RefreshToken parse(JsonNode tokenObject) {
+ assert tokenObject.isObject();
+ var tokenValue = tokenObject.get("refreshToken");
+ var expirationDate = tokenObject.get("expirationDate");
+ var metadata = tokenObject.get("metadata");
+ if (tokenValue == null
+ || !tokenValue.isTextual()
+ || (expirationDate != null && !expirationDate.isTextual())
+ || (metadata != null && !metadata.isObject())) {
+ throw malformedCredential();
+ }
+
+ String refreshToken = tokenValue.asText();
+ ZonedDateTime expiration = null;
+ if (expirationDate != null) {
+ try {
+ expiration = ZonedDateTime.parse(expirationDate.asText());
+ } catch (DateTimeParseException e) {
+ throw new IllegalStateException("Failed to parse expiration date in credential payload.");
+ }
+ }
+
+ return new RefreshToken(refreshToken, expiration, metadata);
+ }
+ }
+
+ public record CredentialConfig(JsonNode input, RefreshToken refreshToken) {}
+
+ public static CredentialConfig readCredential(CredentialReference credentialReference)
+ throws EnsoSecretAccessDenied {
+ RestrictedAccess.checkAccess(allowParseCredential);
+
+ String secretPayload = EnsoSecretReader.readSecret(credentialReference.secretId());
+ ObjectMapper jsonMapper = new ObjectMapper();
+ JsonNode json;
+ try {
+ json = jsonMapper.readTree(secretPayload);
+ } catch (JsonProcessingException e) {
+ throw malformedCredential();
+ }
+
+ var tokenField = json.get("token");
+ if (tokenField == null) {
+ throw new IllegalStateException(
+ "The credential is missing token information. Please finish the authentication flow"
+ + " before using it.");
+ }
+
+ if (!tokenField.isObject()) {
+ throw malformedCredential();
+ }
+
+ var inputField = json.get("input");
+ if (inputField == null || !inputField.isObject()) {
+ throw malformedCredential();
+ }
+
+ return new CredentialConfig(inputField, RefreshToken.parse(tokenField));
+ }
+
+ public static AccessToken requestAccessToken(CredentialReference credentialReference)
+ throws EnsoSecretAccessDenied {
+ RestrictedAccess.checkAccess(allowRefreshCredential);
+ var apiUri =
+ CloudAPI.getAPIRootURI()
+ + "oauth/"
+ + credentialReference.serviceName().toLowerCase()
+ + "/refresh/"
+ + credentialReference.secretId();
+ var client = HttpClient.newBuilder().followRedirects(HttpClient.Redirect.ALWAYS).build();
+ var request =
+ HttpRequest.newBuilder()
+ .uri(URI.create(apiUri))
+ .header("Authorization", "Bearer " + AuthenticationProvider.getAccessToken())
+ .POST(HttpRequest.BodyPublishers.noBody())
+ .build();
+ // TODO retries?
+ HttpResponse This is a very rudimentary approach to the access control, and it is not very extensible, as
- * it requires updating std-base whenever a new library that needs access to secrets is added.
- * However, it seems like the best simple solution for now.
- *
- * Later we may want to replace it with some other solution, e.g. a key that trusted libraries
- * will use to 'sign' their class name, proving that they can be trusted, without the need to
- * update std-base whenever a new library is added.
- */
- private static void checkAccess() throws EnsoSecretAccessDenied {
- var accessLocation =
- StackWalker.getInstance()
- .walk(
- (stackFrameStream -> {
- Optional This is a very rudimentary approach to the access control, and it is not very extensible, as
+ * it requires updating std-base whenever a new library that needs access to secrets is added.
+ * However, it seems like the best simple solution for now.
+ *
+ * Later we may want to replace it with some other solution, e.g. a key that trusted libraries
+ * will use to 'sign' their class name, proving that they can be trusted, without the need to
+ * update std-base whenever a new library is added.
+ */
+ static void checkAccess(List
+ * This value should not leak to Enso as it can give the user access to the access token.
+ */
+ static GoogleCredentials materialize(WrappedGoogleCredentials wrappedGoogleCredentials) {
+ return switch (wrappedGoogleCredentials) {
+ case WrappedGoogleCredentials.LocalFileCredentials(var inner) -> inner;
+ case WrappedGoogleCredentials.SecretCredentials secretCredentials ->
+ GoogleOAuthHelper.createCredential(secretCredentials.reference());
+ };
+ }
+}
diff --git a/std-bits/google-api/src/main/java/org/enso/google/GoogleOAuthHelper.java b/std-bits/google-api/src/main/java/org/enso/google/GoogleOAuthHelper.java
new file mode 100644
index 000000000000..a96a99e4bc89
--- /dev/null
+++ b/std-bits/google-api/src/main/java/org/enso/google/GoogleOAuthHelper.java
@@ -0,0 +1,55 @@
+package org.enso.google;
+
+import com.google.auth.oauth2.AccessToken;
+import com.google.auth.oauth2.GoogleCredentials;
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import org.enso.base.enso_cloud.ExternalLibraryCredentialHelper;
+
+class GoogleOAuthHelper {
+ static GoogleCredentials createCredential(
+ ExternalLibraryCredentialHelper.CredentialReference credentialReference) {
+ credentialReference.expectForService("Google");
+ return new CloudRenewableGoogleCredentials(credentialReference);
+ }
+
+ private static class CloudRenewableGoogleCredentials extends GoogleCredentials {
+ private final ExternalLibraryCredentialHelper.CredentialReference credentialReference;
+ private AccessToken token = null;
+
+ public CloudRenewableGoogleCredentials(
+ ExternalLibraryCredentialHelper.CredentialReference credentialReference) {
+ this.credentialReference = credentialReference;
+ }
+
+ @Override
+ public void refresh() throws IOException {
+ var accessToken = ExternalLibraryCredentialHelper.requestAccessToken(credentialReference);
+ if (accessToken.expirationDate() == null) {
+ throw new IllegalStateException(
+ "The refresh endpoint did not return required expiration date for the Google access"
+ + " token.");
+ }
+
+ Date expiration = Date.from(accessToken.expirationDate().toInstant());
+ token = new AccessToken(accessToken.token(), expiration);
+ }
+
+ @Override
+ public AccessToken refreshAccessToken() throws IOException {
+ refresh();
+ return token;
+ }
+
+ @Override
+ public Map Copyright © 2011–2025 Google. All rights reserved.> getSheetRange(String sheetId, String range) throws IOException {
+ return service
+ .spreadsheets()
+ .values()
+ .get(sheetId, range)
+ .setMajorDimension("COLUMNS")
+ .setValueRenderOption("UNFORMATTED_VALUE")
+ .execute()
+ .getValues();
+ }
+ }
+}
diff --git a/std-bits/google-api/src/main/java/org/enso/google/WrappedGoogleCredentials.java b/std-bits/google-api/src/main/java/org/enso/google/WrappedGoogleCredentials.java
new file mode 100644
index 000000000000..6e7bbf07c4fd
--- /dev/null
+++ b/std-bits/google-api/src/main/java/org/enso/google/WrappedGoogleCredentials.java
@@ -0,0 +1,19 @@
+package org.enso.google;
+
+import com.google.auth.oauth2.GoogleCredentials;
+import java.io.IOException;
+import java.io.InputStream;
+import org.enso.base.enso_cloud.ExternalLibraryCredentialHelper;
+
+/** A wrapper for various ways we construct Google credentials. */
+public sealed interface WrappedGoogleCredentials {
+ record SecretCredentials(ExternalLibraryCredentialHelper.CredentialReference reference)
+ implements WrappedGoogleCredentials {}
+
+ @SuppressWarnings("deprecation")
+ record LocalFileCredentials(GoogleCredentials credential) implements WrappedGoogleCredentials {
+ static LocalFileCredentials fromStream(InputStream stream) throws IOException {
+ return new LocalFileCredentials(GoogleCredentials.fromStream(stream));
+ }
+ }
+}
diff --git a/std-bits/snowflake/src/main/java/org/enso/snowflake/SnowflakeCloudCredentials.java b/std-bits/snowflake/src/main/java/org/enso/snowflake/SnowflakeCloudCredentials.java
new file mode 100644
index 000000000000..0c784fdf4167
--- /dev/null
+++ b/std-bits/snowflake/src/main/java/org/enso/snowflake/SnowflakeCloudCredentials.java
@@ -0,0 +1,159 @@
+package org.enso.snowflake;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.nio.charset.StandardCharsets;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.time.ZonedDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import org.enso.base.enso_cloud.ExternalLibraryCredentialHelper;
+import org.enso.base.enso_cloud.HideableValue;
+import org.enso.base.net.http.UrlencodedBodyBuilder;
+import org.enso.database.JDBCProxy;
+import org.graalvm.collections.Pair;
+
+public final class SnowflakeCloudCredentials {
+ private static SnowflakeCredentialConfig unsafeReadCredential(
+ ExternalLibraryCredentialHelper.CredentialReference credentialReference) {
+ credentialReference.expectForService("Snowflake");
+ ExternalLibraryCredentialHelper.CredentialConfig config =
+ ExternalLibraryCredentialHelper.readCredential(credentialReference);
+ var input = parseInputPart(config.input());
+ var token = SnowflakeRefreshToken.parse(config.refreshToken());
+ return new SnowflakeCredentialConfig(input, token);
+ }
+
+ private static CredentialInput parseInputPart(JsonNode inputObject) {
+ assert inputObject.isObject();
+ var accountField = inputObject.get("account");
+ var clientIdField = inputObject.get("clientId");
+ var clientSecretField = inputObject.get("clientSecret");
+ if (accountField == null
+ || !accountField.isTextual()
+ || clientIdField == null
+ || !clientIdField.isTextual()
+ || clientSecretField == null
+ || !clientSecretField.isTextual()) {
+ throw ExternalLibraryCredentialHelper.malformedCredential();
+ }
+
+ return new CredentialInput(
+ accountField.asText(), clientIdField.asText(), clientSecretField.asText());
+ }
+
+ public static Connection makeConnection(
+ String url,
+ List