
    \                        S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SrSrSrSrSrS\-  rSr " S S\R:                  5      r " S S\R>                  5      r " S S\5      r \RB                  " \RD                  RF                  5       " S S\5      5       r$ " S S\5      r% " S  S!\5      r&\RB                  " \RD                  RF                  5       " S" S#\5      5       r' " S$ S%\5      r(\RB                  " \RD                  RF                  \RD                  RR                  5       " S& S'\5      5       r*\ S(4\%S(4\'S(4\&S(4\*S(4S).r+SoS* jr,SoS+ jr-SpS- jr.SpS. jr/SqS/ jr0SqS0 jr1S1 r2S2 r3S3 r4S4 r5S5 r6S6 r7S7 r8S8 r9S9 r:S: r;S; r<S< r=S= r>S> r?S? r@S@ rASA rBSB rCSC rDSD rESE rFSF rGSG rHSH rISI rJSJ rKSK rLSL rMSM rNSN rOSO rPSP rQSQ rRSR rSSS rTST rUSU rVSV rWSW rXSX rYSY rZSqSZ jr[S[ r\SqS\ jr]SqS] jr^S^ r_SqS_ jr`SqS` jraSa rbSqSb jrcSc rdSd reSe rfSf rgSg rhSh riSi rjSj rkSk rlSl rmSm rnSn rog,)rz(Helpers for parsing flags and arguments.    )absolute_import)division)unicode_literals)base)actions)arg_parsers)maps)resource_args)
completers)parameter_info_lib)
properties)	resources)timesz*cloudkms.projects.locations.ekmConnectionsz$cloudkms.projects.locations.keyRingsz&cloudkms.projects.locations.keyHandleszcloudkms.projects.locationsz/cloudkms.projects.locations.keyRings.cryptoKeysz%s.cryptoKeyVersionsz/cloudkms.projects.locations.keyRings.importJobsc                   2   ^  \ rS rSr   SU 4S jjrSrU =r$ )ListCommandParameterInfo-   c                 ,   > [         [        U ]  UUUUS9$ )N)parameter_valuecheck_properties
for_update)superr   GetFlag)selfparameter_namer   r   r   	__class__s        +lib/googlecloudsdk/command_lib/kms/flags.pyr    ListCommandParameterInfo.GetFlag/   s+     )48')	 9       )NTF)__name__
__module____qualname____firstlineno__r   __static_attributes____classcell__r   s   @r   r   r   -   s    
  r   r   c                       \ rS rSrS rSrg)ListCommandCompleter>   c                 6    [        UUU R                  [        S9$ )N)updaters)r   
collectionCOMPLETERS_BY_CONVENTION)r   parsed_argsarguments      r   ParameterInfo"ListCommandCompleter.ParameterInfo@   s    #)	 r   r   N)r    r!   r"   r#   r0   r$   r   r   r   r(   r(   >   s    r   r(   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )LocationCompleterL   c                 <   > [         [        U ]
  " S[        SS.UD6  g )Nzkms locations list --uri)r,   list_commandr   )r   r3   __init__LOCATION_COLLECTIONr   kwargsr   s     r   r7   LocationCompleter.__init__N   s(    	
T+ &/ r   r   r    r!   r"   r#   r7   r$   r%   r&   s   @r   r3   r3   L   s     r   r3   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )EkmConnectionCompleterV   c                 @   > [         [        U ]
  " S[        SS/S.UD6  g )Nzkms ekm-connections list --urilocationr,   r6   flagsr   )r   r>   r7   EKM_CONNECTION_COLLECTIONr9   s     r   r7   EkmConnectionCompleter.__init__Y   s-    	
 $0 ,5l 	r   r   r<   r&   s   @r   r>   r>   V        r   r>   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )KeyRingCompleterb   c                 @   > [         [        U ]
  " S[        SS/S.UD6  g )Nzkms keyrings list --urirA   rB   r   )r   rH   r7   KEY_RING_COLLECTIONr9   s     r   r7   KeyRingCompleter.__init__d   s-    	
D* &.l 	r   r   r<   r&   s   @r   rH   rH   b        r   rH   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )KeyCompleterm   c                 B   > [         [        U ]
  " S[        SSS/S.UD6  g )Nzkms keys list --urirA   keyringrB   r   )r   rO   r7   CRYPTO_KEY_COLLECTIONr9   s     r   r7   KeyCompleter.__init__o   s/    	,& (*9% 	r   r   r<   r&   s   @r   rO   rO   m   rM   r   rO   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )KeyHandleCompleterx   c                 @   > [         [        U ]
  " S[        SS/S.UD6  g )Nzkms key-handles list --urirA   rB   r   )r   rV   r7   KEY_HANDLE_COLLECTIONr9   s     r   r7   KeyHandleCompleter.__init__{   s-    	
d, (1l 	r   r   r<   r&   s   @r   rV   rV   x   rF   r   rV   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )KeyVersionCompleter   c                 B   > [         [        U ]
  " S[        S/ SQS.UD6  g )Nzkms keys versions list --uri)rA   keyrR   rB   r   )r   r\   r7   CRYPTO_KEY_VERSION_COLLECTIONr9   s     r   r7   KeyVersionCompleter.__init__   s+    	
t- 03, 	r   r   r<   r&   s   @r   r\   r\      rM   r   r\   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )ImportJobCompleter   c                 B   > [         [        U ]
  " S[        SSS/S.UD6  g )Nzbeta kms import-jobs list --urirA   rR   rB   r   )r   rc   r7   IMPORT_JOB_COLLECTIONr9   s     r   r7   ImportJobCompleter.__init__   s0    	
d, (69% 	r   r   r<   r&   s   @r   rc   rc      rF   r   rc   F)rA   rR   z
key-handler_   zimport-jobsc                 L    U R                  S[        SR                  U5      S9  g )N
--locationzLocation of the {0}.	completerhelp)add_argumentr3   formatparserresources     r   AddLocationFlagrr      s)    !!((2  r   c                 L    U R                  S[        SR                  U5      S9  g )N	--keyringzKey ring of the {0}.rj   rm   rH   rn   ro   s     r   AddKeyRingFlagrv      s)     !((2  r   Nc                 @    U R                  S[        U=(       d    SS9  g )N--keyzThe containing key.rj   )rm   rO   rp   	help_texts     r   AddCryptoKeyFlagr{      s"    I,N9N  r   c                 J    [        U S5        [        U S5        [        X5        g )NrR   r_   )rr   rv   r{   ry   s     r   AddKeyResourceFlagsr}      s    &)$6%r   c                 N    U R                  SU[        SR                  U5      S9  g )Nz	--versionzVersion {0}.requiredrk   rl   rm   r\   rn   rp   help_actionr   s      r   AddCryptoKeyVersionFlagr      s,    #  -	  r   c                 N    U R                  SU[        SR                  U5      S9  g )Nz--primary-versionzPrimary version {0}.r   r   r   s      r   AddCryptoKeyPrimaryVersionFlagr      s,    #!((5	  r   c                 J    U R                  S[        R                  " SS9SS9  g )Nz--rotation-period1d)lower_boundzgAutomatic rotation period of the key. See $ gcloud topic datetimes for information on duration formats.typerl   rm   r   Durationrp   s    r   AddRotationPeriodFlagr      s,    D1J	  r   c                 V    U R                  S[        R                  R                  SS9  g )Nz--next-rotation-timezfNext automatic rotation time of the key. See $ gcloud topic datetimes for information on time formats.r   )rm   r   DatetimeParser   s    r   AddNextRotationTimeFlagr      s-    %%F	  r   c                 &    U R                  SSSS9  g )Nz--remove-rotation-schedule
store_truez1Remove any existing rotation schedule on the key.)actionrl   rm   r   s    r   AddRemoveRotationScheduleFlagr      s    ">  r   c                 *    U R                  SS SSSS9  g )Nz--skip-initial-version-creationr   skip_initial_version_creationzSSkip creating the first version in a key and setting it as primary during creation.defaultr   destrl   r   r   s    r   !AddSkipInitialVersionCreationFlagr      s&    '*%  	r   c                 D    U R                  SSR                  U5      SS9  g )Nz--plaintext-filez$File path of the plaintext file {0}.Trl   r   rm   rn   rp   r   s     r   AddPlaintextFileFlagr      s)    188E  r   c                 D    U R                  SSR                  U5      SS9  g )Nz--shared-secret-filez(File path of the shared secret file {0}.Tr   r   r   s     r   AddSharedSecretFileFlagr     s)    5<<[I  r   c                 D    U R                  SSR                  U5      SS9  g )Nz--ciphertext-filez%File path of the ciphertext file {0}.Tr   r   r   s     r   AddCiphertextFileFlagr     s)    299+F  r   c                 D    U R                  SSR                  U5      SS9  g )Nz--signature-filezPath to the signature file {}.Tr   r   r   s     r   AddSignatureFileFlagr     s)    +22;?  r   c                 D    U R                  SSR                  U5      SS9  g )Nz--input-filezPath to the input file {}.Tr   r   r   s     r   AddInputFileFlagr      s)    '..{;  r   c           
      l    U R                  SSR                  U5      S[        R                  " SSS9S9  g )Nz--rsa-aes-wrapped-key-filez(Path to the wrapped RSA AES key file {}.TzxThe {flag_name} flag is deprecated but will continue to be supported. Prefer to use the --wrapped-key-file flag instead.)warn)rl   hiddenr   )rm   rn   r   DeprecationActionr   s     r   AddRsaAesWrappedKeyFileFlagr   (  s@    "5<<[I&&
&N	  r   c                 B    U R                  SSR                  U5      S9  g )Nz--wrapped-key-filez,Path to the RSA/RSA+AES wrapped key file {}.rl   r   r   s     r   AddWrappedKeyFileFlagr   7  s&    9@@M  r   c                 B    U R                  SSR                  U5      S9  g )Nz--output-filezPath to the output file {}.r   r   r   s     r   AddOutputFileFlagr   >  s&    9@@M  r   c                 $    U R                  SSS9  g )Nz$--additional-authenticated-data-filezLFile path to the optional file containing the additional authenticated data.r   r   r   s    r   AddAadFileFlagr   D  s    ,   r   c                 B    U R                  SSR                  U5      S9  g )Nz--initialization-vector-filezGFile path to the optional file containing the initialization vector {}.r   r   r   s     r   AddIvFileFlagr   N  s'    $vk*	  r   c                 ,    U R                  S/ SQSSS9  g )N--protection-level)softwarehsmexternalzexternal-vpcr   zProtection level of the key.)choicesr   rl   r   r   s    r   AddProtectionLevelFlagr   X  s!    =)	  r   c                 ,    U R                  SSS/SSS9  g )Nr   r   r   z#Protection level of the import job.Tr   rl   r   r   r   s    r   AddRequiredProtectionLevelFlagr   a  s&    5!0	  r   c                 $    U R                  SSS9  g )Nz--attestation-filez$Path to the output attestation file.r   r   r   s    r   AddAttestationFileFlagr   j  s    !G  r   c                 T    U R                  S[        [        R                  5      SS9  g )Nz--default-algorithmzThe default algorithm for the crypto key. For more information about choosing an algorithm, see https://cloud.google.com/kms/docs/algorithms.r   rl   )rm   sortedr	   ALL_ALGORITHMSr   s    r   AddDefaultAlgorithmFlagr   p  s+    T(():	  r   c                 p    U R                  S[        [        R                  R                  5      SS  SSS9  g )Nz--import-method   zThe wrapping method to be used for incoming key material. For more information about choosing an import method, see https://cloud.google.com/kms/docs/key-wrapping.Tr   )rm   r   r	   IMPORT_METHOD_MAPPERr   r   s    r   AddRequiredImportMethodFlagr   |  s=    T..667;<   	r   c                 $    U R                  SSS9  g )Nz--public-key-filezPath to the public key of the ImportJob, used to wrap the key for import. If missing, the public key will be fetched on your behalf.r   r   r   s    r   AddPublicKeyFileFlagr     s    O  r   c                 $    U R                  SSS9  g )Nz--target-key-filezPath to the unwrapped target key to import into a Cloud KMS key version. If specified, the key will be securely wrapped before transmission to Google.r   r   r   s    r   AddTargetKeyFileFlagr     s    %  r   c                 T    U R                  S[        [        R                  5      US9  g )Nz--digest-algorithmr   )rm   r   r	   DIGESTSr   s     r   AddDigestAlgorithmFlagr     s%    F4<<$8{  r   c                 V    U R                  S[        [        R                  5      SSS9  g )Nz--algorithmzThe algorithm to assign to the new key version. For more information about supported algorithms, see https://cloud.google.com/kms/docs/algorithms.Tr   )rm   r   r	   ALGORITHMS_FOR_IMPORTr   s    r   AddImportedVersionAlgorithmFlagr     s0    T//0:   	r   c                 (    U R                  SS/SS9  g )Nz--external-key-uriz	--key-urizFThe URI of the external key for keys with protection level "external".)suggestion_aliasesrl   r   r   s    r   AddExternalKeyUriFlagr     s"    %	  r   c                 $    U R                  SSS9  g )Nz--ekm-connection-key-pathz_The path to the external key material on the EKM for keys with protection level "external-vpc".r   r   r   s    r   AddEkmConnectionKeyPathFlagr     s    !-  r   c                 &    U R                  SSSS9  g )Nz--statestatezState of the key version.)r   rl   r   r   s    r   AddStateFlagr     s    ig4OPr   c                 *    U R                  SS SSSS9  g )Nz--skip-integrity-verificationr   skip_integrity_verificationz?Skip integrity verification on request and response API fields.r   r   r   s    r   AddSkipIntegrityVerificationr     s$    %(L  r   c                 J    U R                  S[        R                  " SS9SS9  g )Nz--destroy-scheduled-duration120d)upper_boundzThe amount of time that versions of the key should spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED. See $ gcloud topic datetimes for information on duration formats.r   r   r   s    r   AddDestroyScheduledDurationFlagr     s,    $F3J	  r   c                 $    U R                  SSS9  g )Nz--crypto-key-backenda  The resource name of the backend environment where the key material for all CryptoKeyVersions associated with this CryptoKey reside and where all related cryptographic operations are performed. Currently only applicable for EXTERNAL_VPC and EkmConnection resource names.r   r   r   s    r   AddCryptoKeyBackendFlagr     s    P  r   c                 *    U R                  SS SSSS9  g )Nz--import-onlyr   import_onlyz,Restrict this key to imported versions only.r   r   r   s    r   AddImportOnlyFlagr     s$    9  r   c           	          U R                  S[        R                  " [        R                  R
                  [        [        R                  R
                  5      S9SSS9  g )Nz--allowed-access-reasons)r   
max_lengthALLOWED_ACCESS_REASONSau  The list of allowed Key Access Justifications access reasons on the key. The key must be enrolled in Key Access Justifications to configure this field. By default, this field is absent, and all justification codes are allowed. For more information about justification codes, see https://cloud.google.com/assured-workloads/key-access-justifications/docs/justification-codes.)r   metavarrl   )rm   r   ArgListr	   ACCESS_REASON_MAPPERr   lenr   s    r   AddAllowedAccessReasonsFlagr     sT     ++3322::; 'k  r   c                 (    U R                  SS SSS9  g )Nz)--remove-key-access-justifications-policyr   z`Removes the Key Access Justifications policy on the key, making all justification codes allowed.)r   r   rl   r   r   s    r   *AddRemoveKeyAccessJustificationsPolicyFlagr   	  s#    1-  r   c                 &    U R                  SS SS9  g )Nz--public-key-formatz4The format in which the public key will be returned.)r   rl   r   r   s    r   AddPublicKeyFormatFlagr     s    A  r   c                 L    U R                  S[        SR                  U5      S9  g )NrR   zName of the key ring {0}.rj   ru   r   s     r   AddKeyRingArgumentr     s)     &--k:  r   c                 L    U R                  S[        SR                  U5      S9  g )Nr_   zName of the key {0}.rj   )rm   rO   rn   r   s     r   AddCryptoKeyArgumentr   &  s)    !((5  r   c                 J    [        U S5        [        U S5        [        X5        g )Nr_   )rr   rv   r   r   s     r   AddKeyResourceArgumentr   .  s    &% v+r   c                 L    U R                  S[        SR                  U5      S9  g )NversionzName of the version {0}.rj   r   r   s     r   AddCryptoKeyVersionArgumentr  4  s)    #%,,[9  r   c                 0    [        U 5        [        X5        g N)r}   r  r   s     r   AddKeyVersionResourceArgumentr  <  s    ff2r   c                 L    U R                  S[        SR                  U5      S9  g )N
import_jobName of the import job {0}.rj   rm   rc   rn   r   s     r   AddPositionalImportJobArgumentr	  A  s)    "(//<  r   c                 N    U R                  S[        SR                  U5      SS9  g )Nz--import-jobr  T)rk   rl   r   r  r   s     r   AddRequiredImportJobArgumentr  I  s,    "(//<	  r   c                 ,    U R                  SS/ SQSS9  g )Nz--certificate-chain-typeall)r  caviumzgoogle-cardzgoogle-partitionzCertificate chain to retrieve.)r   r   rl   r   r   s    r   AddCertificateChainFlagr  R  s!     B+	  r   c                 &    U R                  SSUS9  g )Nz--service-directory-servicezNThe resource name of the Service Directory service pointing to an EKM replica.r   r   rp   r   s     r   AddServiceDirectoryServiceFlagr  [  s"    #   r   c                 $    U R                  SSS9  g )Nz--endpoint-filterzyThe filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered.r   r   r   s    r   AddEndpointFilterFlagr  f  s    I  r   c                 &    U R                  SSUS9  g )Nz
--hostnamez<The hostname of the EKM replica used at TLS and HTTP layers.r   r   r  s     r   AddHostnameFlagr  p  s    I  r   c                 P    U R                  S[        R                  " 5       SSUS9  g )Nz--server-certificates-filesSERVER_CERTIFICATESzA list of filenames of leaf server certificates used to authenticate HTTPS connections to the EKM replica in PEM format. If files are not in PEM, the assumed format will be DER.)r   r   rl   r   )rm   r   r   r  s     r   AddServerCertificatesFilesFlagr  x  s2    # #B   
r   c                 h    U R                  SS9nUR                  SSS/SS9  UR                  SS	S9  g
)z1Adds key-management-mode flags and related flags.zNSpecifies the key management mode for the EkmConnection and associated fields.r   z--key-management-modemanualz	cloud-kmsag  Key management mode of the ekm connection. An EkmConnection in `cloud-kms` mode means Cloud KMS will attempt to create and manage the key material that resides on the EKM for crypto keys created with this EkmConnection. An EkmConnection in `manual` mode means the external key material will not be managed by Cloud KMS. Omitting the flag defaults to `manual`.r   z--crypto-space-pathzuCrypto space path for the EkmConnection. Required during EkmConnection creation if `--key-management-mode=cloud-kms`.N)	add_grouprm   rp   groups     r   AddKeyManagementModeFlagsr    sa     

   % %5	   I  r   c                 &    U R                  SSUS9  g )Nz--default-ekm-connectionzThe resource name of the EkmConnection to be used as the default EkmConnection for all `external-vpc` CryptoKeys in a project and location. Can be an empty string to remove the default EkmConnection.r   r   r  s     r   AddDefaultEkmConnectionFlagr!    s"     
   	r   c                 &    U R                  SSUS9  g )Nz--resource-typezhThe resource type selector for KeyHandle resources of the form {{SERVICE}}.{{UNIVERSE_DOMAIN}}/{{TYPE}}.r   r   r  s     r   AddResourceTypeSelectorFlagr#    s"    7   r   c                     [         R                  " U SS5        [        U S5        U R                  SSS9nUR	                  SSS9  UR	                  SSS	S
9  g )NTri   )mutexr   z--key-handle-idz0The KeyHandle id for the new KeyHandle resource.r   z--generate-key-handle-idz7Generate a KeyHandle id for the new KeyHandle resource.r   )rl   r   )r
   AddKmsLocationResourceArgForKMSr#  r  rm   r  s     r   AddCreateKeyHandleFlagsr'    sj    //lKfd+




5%=    D  r   c                 &    U R                  SSUS9  g )Nz--folderz9The folder id in which the AutokeyConfig resource exists.r   r   r  s     r   AddFolderIdFlagr)    s    F  r   c                 $    U R                  SSS9  g )NCONFIG_FILEz/The file containing the AutokeyConfig resource.r   r   r   s    r   AddAutokeyConfigFileFlagr,    s    <  r   c                     [         R                  R                  U R                  S[        R
                  R                  R                  R                  0[        S9$ )N
projectsIdparamsr,   )
r   REGISTRYr   rA   r   VALUEScoreproject	GetOrFailr8   argss    r   ParseLocationNamer8    sJ    				!	!
mmJ--22::DDE$ 
" 
 r   c                     [         R                  R                  U R                  [        R
                  R                  R                  R                  U R                  S5      S.[        S9$ Nri   )r.  locationsIdr/  )r   r1  r   ekm_connectionr   r2  r3  r4  r5  MakeGetOrRaiserD   r6  s    r   ParseEkmConnectionNamer>    s\    				!	!
"))..66@@,,\: + 
" 
 r   c                     [         R                  R                  U R                  [        R
                  R                  R                  R                  U R                  S5      S.[        S9$ r:  )r   r1  r   rR   r   r2  r3  r4  r5  r=  rK   r6  s    r   ParseKeyRingNamer@    sZ    				!	!
ll"))..66@@,,\: % 
" 
 r   c                     [         R                  R                  U R                  U R	                  S5      U R	                  S5      [
        R                  R                  R                  R                  S.[        S9$ Nrt   ri   )
keyRingsIdr;  r.  r/  )r   r1  r   r_   r=  r   r2  r3  r4  r5  rS   r6  s    r   ParseCryptoKeyNamerD    sh    				!	!
hh++K8,,\:"))..66@@
 ' 
" 
 r   c                    [         R                  R                  U R                  U R	                  S5      U R	                  S5      U R	                  S5      [
        R                  R                  R                  R                  S.[        S9$ )Nrx   rt   ri   )cryptoKeysIdrC  r;  r.  r/  )r   r1  r   r   r=  r   r2  r3  r4  r5  r`   r6  s    r   ParseCryptoKeyVersionNamerG    sv    				!	!
ll--g6++K8,,\:"))..66@@	 / 
" 	
 	r   c                     [         R                  R                  U R                  U R	                  S5      U R	                  S5      [
        R                  R                  R                  R                  S.[        S9$ rB  )r   r1  r   r  r=  r   r2  r3  r4  r5  rf   r6  s    r   ParseImportJobNamerI    sh    				!	!
oo++K8,,\:"))..66@@
 ' 
" 
 r   c                     U R                  5       R                  S5      nSR                  US S 5      nU R                  5       nX1S   S-   	 [        R
                  R                  " U40 UD6$ )N.Id)
CollectionsplitjoinAsDictr   r1  Create)resource_refcollection_listparent_collectionr0  s       r   ParseParentFromResourcerV    sl     ++-33C8/hhs34 &R 4'(				"	"#4	?	??r   c                 `    U R                   b!  SR                  U R                   5      Ul        g g Nz{0}s)rotation_periodrn   rotationPeriodr7  
crypto_keys     r   SetRotationPeriodr]  (  s*    	% &d.B.B CJ &r   c                 j    U R                   b&  [        R                  " U R                   5      Ul        g g r  )next_rotation_timer   FormatDateTimenextRotationTimer[  s     r   SetNextRotationTimerb  -  s,    	("'"6"6t7N7N"OJ )r   c                 `    U R                   b!  SR                  U R                   5      Ul        g g rX  )destroy_scheduled_durationrn   destroyScheduledDurationr[  s     r   SetDestroyScheduledDurationrf  2  s-    	$$0*0--''+J' 1r   c                 
   [         R                  " 5       nU R                  ba  / nU R                   H:  n[        R                  R                  U5      nXS;  d  M)  UR                  U5        M<     UR                  US9Ul        g g )N)allowedAccessReasons)	cloudkms_baseGetMessagesModuleallowed_access_reasonsr	   r   GetEnumForChoiceappendKeyAccessJustificationsPolicykeyAccessJustificationsPolicy)r7  r\  messagesrk  access_reasonreason_strings         r    SetKeyAccessJustificationsPolicyrs  9  s    ,,.(	  ,44//@@Om		4%%m4 5
 	..!7 	/ 	
 , -r   )rq   r  )F)p__doc__
__future__r   r   r   googlecloudsdk.api_lib.cloudkmsr   ri  googlecloudsdk.callioper   r   googlecloudsdk.command_lib.kmsr	   r
   googlecloudsdk.command_lib.utilr   r   googlecloudsdk.corer   r   googlecloudsdk.core.utilr   rD   rK   rY   r8   rS   r`   rf   ParameterInfoByConventionr   r(   r3   ReleaseTracksReleaseTrackALPHAr>   rH   rO   rV   r\   BETArc   r-   rr   rv   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r  r!  r#  r'  r)  r,  r8  r>  r@  rD  rG  rI  rV  r]  rb  rf  rs  r   r   r   <module>r     s   / &  ' A + / ( / 8 6 > * ) *H < @ 3  J  69N N I 1KK "::: ,  D%%++,1  -+ '  D%%++,-  -.  D%%++T->->-C-CD-  E #E* %(%u-% &. &
	

Q		&	,3
<
	
	@D
P
r   