text:
// NOTE: This file was generated by the ServiceGenerator.

// ----------------------------------------------------------------------------
// API:
//   Assured Workloads API (assuredworkloads/v1)
// Documentation:
//   https://cloud.google.com/learnmoreurl

#import <GoogleAPIClientForREST/GTLRObject.h>

#if GTLR_RUNTIME_VERSION != 3000
#error This file was generated by a different version of ServiceGenerator which is incompatible with this GTLR library source.
#endif

@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructions;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructionsConsole;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructionsGcloud;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Labels;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadComplianceStatus;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadKMSSettings;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings;
@class GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse;
@class GTLRAssuredworkloads_GoogleLongrunningOperation;
@class GTLRAssuredworkloads_GoogleLongrunningOperation_Metadata;
@class GTLRAssuredworkloads_GoogleLongrunningOperation_Response;
@class GTLRAssuredworkloads_GoogleRpcStatus;
@class GTLRAssuredworkloads_GoogleRpcStatus_Details_Item;

// Generated comments include content from the discovery document; avoid them
// causing warnings since clang's checks are some what arbitrary.
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"

NS_ASSUME_NONNULL_BEGIN

// ----------------------------------------------------------------------------
// Constants - For some of the classes' properties below.

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata.complianceRegime

/**
 *  Assured Workloads for Partners
 *
 *  Value: "ASSURED_WORKLOADS_FOR_PARTNERS"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_AssuredWorkloadsForPartners;
/**
 *  Assured Workloads for Australia Regions and Support controls Available for
 *  public preview consumption. Don't create production workloads.
 *
 *  Value: "AU_REGIONS_AND_US_SUPPORT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_AuRegionsAndUsSupport;
/**
 *  Assured Workloads For Canada Regions and Support controls
 *
 *  Value: "CA_REGIONS_AND_SUPPORT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_CaRegionsAndSupport;
/**
 *  Criminal Justice Information Services (CJIS) Security policies.
 *
 *  Value: "CJIS"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Cjis;
/**
 *  Unknown compliance regime.
 *
 *  Value: "COMPLIANCE_REGIME_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_ComplianceRegimeUnspecified;
/**
 *  Assured Workloads For EU Regions and Support controls
 *
 *  Value: "EU_REGIONS_AND_SUPPORT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_EuRegionsAndSupport;
/**
 *  FedRAMP High data protection controls
 *
 *  Value: "FEDRAMP_HIGH"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_FedrampHigh;
/**
 *  FedRAMP Moderate data protection controls
 *
 *  Value: "FEDRAMP_MODERATE"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_FedrampModerate;
/**
 *  Health Insurance Portability and Accountability Act controls
 *
 *  Value: "HIPAA"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Hipaa;
/**
 *  Health Information Trust Alliance controls
 *
 *  Value: "HITRUST"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Hitrust;
/**
 *  Information protection as per DoD IL4 requirements.
 *
 *  Value: "IL4"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Il4;
/**
 *  International Traffic in Arms Regulations
 *
 *  Value: "ITAR"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Itar;
/**
 *  Assured Workloads For US Regions data protection controls
 *
 *  Value: "US_REGIONAL_ACCESS"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_UsRegionalAccess;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest.restrictionType

/**
 *  Allow the use all of all gcp products, irrespective of the compliance
 *  posture. This effectively removes gcp.restrictServiceUsage OrgPolicy on the
 *  AssuredWorkloads Folder.
 *
 *  Value: "ALLOW_ALL_GCP_RESOURCES"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest_RestrictionType_AllowAllGcpResources;
/**
 *  Based on Workload's compliance regime, allowed list changes. See -
 *  https://cloud.google.com/assured-workloads/docs/supported-products for the
 *  list of supported resources.
 *
 *  Value: "ALLOW_COMPLIANT_RESOURCES"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest_RestrictionType_AllowCompliantResources;
/**
 *  Similar to ALLOW_COMPLIANT_RESOURCES but adds the list of compliant
 *  resources to the existing list of resources. Effective org-policy of the
 *  Folder is considered to ensure there is no disruption to the existing
 *  customer workflows.
 *
 *  Value: "APPEND_COMPLIANT_RESOURCES"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest_RestrictionType_AppendCompliantResources;
/**
 *  Unknown restriction type.
 *
 *  Value: "RESTRICTION_TYPE_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest_RestrictionType_RestrictionTypeUnspecified;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation.state

/**
 *  Violation is Exception
 *
 *  Value: "EXCEPTION"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation_State_Exception;
/**
 *  Violation is resolved.
 *
 *  Value: "RESOLVED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation_State_Resolved;
/**
 *  Unspecified state.
 *
 *  Value: "STATE_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation_State_StateUnspecified;
/**
 *  Violation is Unresolved
 *
 *  Value: "UNRESOLVED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation_State_Unresolved;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation.remediationType

/**
 *  Remediation type for boolean org policy
 *
 *  Value: "REMEDIATION_BOOLEAN_ORG_POLICY_VIOLATION"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationBooleanOrgPolicyViolation;
/**
 *  Remediation type for list org policy which have allowed values in the
 *  monitoring rule
 *
 *  Value: "REMEDIATION_LIST_ALLOWED_VALUES_ORG_POLICY_VIOLATION"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationListAllowedValuesOrgPolicyViolation;
/**
 *  Remediation type for list org policy which have denied values in the
 *  monitoring rule
 *
 *  Value: "REMEDIATION_LIST_DENIED_VALUES_ORG_POLICY_VIOLATION"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationListDeniedValuesOrgPolicyViolation;
/**
 *  Remediation type for gcp.restrictCmekCryptoKeyProjects
 *
 *  Value: "REMEDIATION_RESTRICT_CMEK_CRYPTO_KEY_PROJECTS_ORG_POLICY_VIOLATION"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationRestrictCmekCryptoKeyProjectsOrgPolicyViolation;
/**
 *  Unspecified remediation type
 *
 *  Value: "REMEDIATION_TYPE_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationTypeUnspecified;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload.complianceRegime

/**
 *  Assured Workloads for Partners
 *
 *  Value: "ASSURED_WORKLOADS_FOR_PARTNERS"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_AssuredWorkloadsForPartners;
/**
 *  Assured Workloads for Australia Regions and Support controls Available for
 *  public preview consumption. Don't create production workloads.
 *
 *  Value: "AU_REGIONS_AND_US_SUPPORT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_AuRegionsAndUsSupport;
/**
 *  Assured Workloads For Canada Regions and Support controls
 *
 *  Value: "CA_REGIONS_AND_SUPPORT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_CaRegionsAndSupport;
/**
 *  Criminal Justice Information Services (CJIS) Security policies.
 *
 *  Value: "CJIS"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Cjis;
/**
 *  Unknown compliance regime.
 *
 *  Value: "COMPLIANCE_REGIME_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_ComplianceRegimeUnspecified;
/**
 *  Assured Workloads For EU Regions and Support controls
 *
 *  Value: "EU_REGIONS_AND_SUPPORT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_EuRegionsAndSupport;
/**
 *  FedRAMP High data protection controls
 *
 *  Value: "FEDRAMP_HIGH"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_FedrampHigh;
/**
 *  FedRAMP Moderate data protection controls
 *
 *  Value: "FEDRAMP_MODERATE"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_FedrampModerate;
/**
 *  Health Insurance Portability and Accountability Act controls
 *
 *  Value: "HIPAA"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Hipaa;
/**
 *  Health Information Trust Alliance controls
 *
 *  Value: "HITRUST"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Hitrust;
/**
 *  Information protection as per DoD IL4 requirements.
 *
 *  Value: "IL4"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Il4;
/**
 *  International Traffic in Arms Regulations
 *
 *  Value: "ITAR"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Itar;
/**
 *  Assured Workloads For US Regions data protection controls
 *
 *  Value: "US_REGIONAL_ACCESS"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_UsRegionalAccess;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload.kajEnrollmentState

/**
 *  Complete State for KAJ Enrollment.
 *
 *  Value: "KAJ_ENROLLMENT_STATE_COMPLETE"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_KajEnrollmentState_KajEnrollmentStateComplete;
/**
 *  Pending State for KAJ Enrollment.
 *
 *  Value: "KAJ_ENROLLMENT_STATE_PENDING"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_KajEnrollmentState_KajEnrollmentStatePending;
/**
 *  Default State for KAJ Enrollment.
 *
 *  Value: "KAJ_ENROLLMENT_STATE_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_KajEnrollmentState_KajEnrollmentStateUnspecified;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload.partner

/**
 *  S3NS regime/controls.
 *
 *  Value: "LOCAL_CONTROLS_BY_S3NS"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Partner_LocalControlsByS3ns;
/**
 *  Unknown partner regime/controls.
 *
 *  Value: "PARTNER_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Partner_PartnerUnspecified;
/**
 *  TSystem regime/controls.
 *
 *  Value: "SOVEREIGN_CONTROLS_BY_T_SYSTEMS"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Partner_SovereignControlsByTSystems;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo.resourceType

/**
 *  Consumer Folder.
 *
 *  Value: "CONSUMER_FOLDER"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_ConsumerFolder;
/**
 *  Consumer project. AssuredWorkloads Projects are no longer supported. This
 *  field will be ignored only in CreateWorkload requests. ListWorkloads and
 *  GetWorkload will continue to provide projects information. Use
 *  CONSUMER_FOLDER instead.
 *
 *  Value: "CONSUMER_PROJECT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_ConsumerProject;
/**
 *  Consumer project containing encryption keys.
 *
 *  Value: "ENCRYPTION_KEYS_PROJECT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_EncryptionKeysProject;
/**
 *  Keyring resource that hosts encryption keys.
 *
 *  Value: "KEYRING"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_Keyring;
/**
 *  Unknown resource type.
 *
 *  Value: "RESOURCE_TYPE_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_ResourceTypeUnspecified;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings.resourceType

/**
 *  Consumer Folder.
 *
 *  Value: "CONSUMER_FOLDER"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_ConsumerFolder;
/**
 *  Consumer project. AssuredWorkloads Projects are no longer supported. This
 *  field will be ignored only in CreateWorkload requests. ListWorkloads and
 *  GetWorkload will continue to provide projects information. Use
 *  CONSUMER_FOLDER instead.
 *
 *  Value: "CONSUMER_PROJECT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_ConsumerProject;
/**
 *  Consumer project containing encryption keys.
 *
 *  Value: "ENCRYPTION_KEYS_PROJECT"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_EncryptionKeysProject;
/**
 *  Keyring resource that hosts encryption keys.
 *
 *  Value: "KEYRING"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_Keyring;
/**
 *  Unknown resource type.
 *
 *  Value: "RESOURCE_TYPE_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_ResourceTypeUnspecified;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse.setupErrors

/**
 *  Invalid states for all customers, to be redirected to AA UI for additional
 *  details.
 *
 *  Value: "ERROR_INVALID_BASE_SETUP"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupErrors_ErrorInvalidBaseSetup;
/**
 *  Returned when there is not an EKM key configured.
 *
 *  Value: "ERROR_MISSING_EXTERNAL_SIGNING_KEY"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupErrors_ErrorMissingExternalSigningKey;
/**
 *  Returned when there are no enrolled services or the customer is enrolled in
 *  CAA only for a subset of services.
 *
 *  Value: "ERROR_NOT_ALL_SERVICES_ENROLLED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupErrors_ErrorNotAllServicesEnrolled;
/**
 *  Returned when exception was encountered during evaluation of other criteria.
 *
 *  Value: "ERROR_SETUP_CHECK_FAILED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupErrors_ErrorSetupCheckFailed;
/**
 *  Unspecified.
 *
 *  Value: "SETUP_ERROR_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupErrors_SetupErrorUnspecified;

// ----------------------------------------------------------------------------
// GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse.setupStatus

/**
 *  Unspecified.
 *
 *  Value: "SETUP_STATE_UNSPECIFIED"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupStatus_SetupStateUnspecified;
/**
 *  SAA enrollment comopleted.
 *
 *  Value: "STATUS_COMPLETE"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupStatus_StatusComplete;
/**
 *  SAA enrollment pending.
 *
 *  Value: "STATUS_PENDING"
 */
FOUNDATION_EXTERN NSString * const kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupStatus_StatusPending;

/**
 *  Request for acknowledging the violation Next Id: 4
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1AcknowledgeViolationRequest : GTLRObject

/**
 *  Required. Business justification explaining the need for violation
 *  acknowledgement
 */
@property(nonatomic, copy, nullable) NSString *comment;

/**
 *  Optional. This field is deprecated and will be removed in future version of
 *  the API. Name of the OrgPolicy which was modified with non-compliant change
 *  and resulted in this violation. Format:
 *  projects/{project_number}/policies/{constraint_name}
 *  folders/{folder_id}/policies/{constraint_name}
 *  organizations/{organization_id}/policies/{constraint_name}
 */
@property(nonatomic, copy, nullable) NSString *nonCompliantOrgPolicy;

@end

/**
 *  Response for violation acknowledgement
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1AcknowledgeViolationResponse : GTLRObject
@end

/**
 *  Operation metadata to give request details of CreateWorkload.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata : GTLRObject

/**
 *  Optional. Compliance controls that should be applied to the resources
 *  managed by the workload.
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_AssuredWorkloadsForPartners
 *        Assured Workloads for Partners (Value:
 *        "ASSURED_WORKLOADS_FOR_PARTNERS")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_AuRegionsAndUsSupport
 *        Assured Workloads for Australia Regions and Support controls Available
 *        for public preview consumption. Don't create production workloads.
 *        (Value: "AU_REGIONS_AND_US_SUPPORT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_CaRegionsAndSupport
 *        Assured Workloads For Canada Regions and Support controls (Value:
 *        "CA_REGIONS_AND_SUPPORT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Cjis
 *        Criminal Justice Information Services (CJIS) Security policies.
 *        (Value: "CJIS")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_ComplianceRegimeUnspecified
 *        Unknown compliance regime. (Value: "COMPLIANCE_REGIME_UNSPECIFIED")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_EuRegionsAndSupport
 *        Assured Workloads For EU Regions and Support controls (Value:
 *        "EU_REGIONS_AND_SUPPORT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_FedrampHigh
 *        FedRAMP High data protection controls (Value: "FEDRAMP_HIGH")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_FedrampModerate
 *        FedRAMP Moderate data protection controls (Value: "FEDRAMP_MODERATE")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Hipaa
 *        Health Insurance Portability and Accountability Act controls (Value:
 *        "HIPAA")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Hitrust
 *        Health Information Trust Alliance controls (Value: "HITRUST")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Il4
 *        Information protection as per DoD IL4 requirements. (Value: "IL4")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_Itar
 *        International Traffic in Arms Regulations (Value: "ITAR")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata_ComplianceRegime_UsRegionalAccess
 *        Assured Workloads For US Regions data protection controls (Value:
 *        "US_REGIONAL_ACCESS")
 */
@property(nonatomic, copy, nullable) NSString *complianceRegime;

/** Optional. Time when the operation was created. */
@property(nonatomic, strong, nullable) GTLRDateTime *createTime;

/** Optional. The display name of the workload. */
@property(nonatomic, copy, nullable) NSString *displayName;

/** Optional. The parent of the workload. */
@property(nonatomic, copy, nullable) NSString *parent;

@end

/**
 *  Response of ListViolations endpoint.
 *
 *  @note This class supports NSFastEnumeration and indexed subscripting over
 *        its "violations" property. If returned as the result of a query, it
 *        should support automatic pagination (when @c shouldFetchNextPages is
 *        enabled).
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ListViolationsResponse : GTLRCollectionObject

/** The next page token. Returns empty if reached the last page. */
@property(nonatomic, copy, nullable) NSString *nextPageToken;

/**
 *  List of Violations under a Workload.
 *
 *  @note This property is used to support NSFastEnumeration and indexed
 *        subscripting on this class.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation *> *violations;

@end

/**
 *  Response of ListWorkloads endpoint.
 *
 *  @note This class supports NSFastEnumeration and indexed subscripting over
 *        its "workloads" property. If returned as the result of a query, it
 *        should support automatic pagination (when @c shouldFetchNextPages is
 *        enabled).
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ListWorkloadsResponse : GTLRCollectionObject

/** The next page token. Return empty if reached the last page. */
@property(nonatomic, copy, nullable) NSString *nextPageToken;

/**
 *  List of Workloads under a given parent.
 *
 *  @note This property is used to support NSFastEnumeration and indexed
 *        subscripting on this class.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload *> *workloads;

@end

/**
 *  Request for restricting list of available resources in Workload environment.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest : GTLRObject

/**
 *  Required. The type of restriction for using gcp products in the Workload
 *  environment.
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest_RestrictionType_AllowAllGcpResources
 *        Allow the use all of all gcp products, irrespective of the compliance
 *        posture. This effectively removes gcp.restrictServiceUsage OrgPolicy
 *        on the AssuredWorkloads Folder. (Value: "ALLOW_ALL_GCP_RESOURCES")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest_RestrictionType_AllowCompliantResources
 *        Based on Workload's compliance regime, allowed list changes. See -
 *        https://cloud.google.com/assured-workloads/docs/supported-products for
 *        the list of supported resources. (Value: "ALLOW_COMPLIANT_RESOURCES")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest_RestrictionType_AppendCompliantResources
 *        Similar to ALLOW_COMPLIANT_RESOURCES but adds the list of compliant
 *        resources to the existing list of resources. Effective org-policy of
 *        the Folder is considered to ensure there is no disruption to the
 *        existing customer workflows. (Value: "APPEND_COMPLIANT_RESOURCES")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesRequest_RestrictionType_RestrictionTypeUnspecified
 *        Unknown restriction type. (Value: "RESTRICTION_TYPE_UNSPECIFIED")
 */
@property(nonatomic, copy, nullable) NSString *restrictionType;

@end

/**
 *  Response for restricting the list of allowed resources.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1RestrictAllowedResourcesResponse : GTLRObject
@end

/**
 *  Workload monitoring Violation.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation : GTLRObject

/**
 *  A boolean that indicates if the violation is acknowledged
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *acknowledged;

/**
 *  Optional. Timestamp when this violation was acknowledged last. This will be
 *  absent when acknowledged field is marked as false.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *acknowledgementTime;

/**
 *  Output only. Immutable. Audit Log Link for violated resource Format:
 *  https://console.cloud.google.com/logs/query;query={logName}{protoPayload.resourceName}{timeRange}{folder}
 */
@property(nonatomic, copy, nullable) NSString *auditLogLink;

/** Output only. Time of the event which triggered the Violation. */
@property(nonatomic, strong, nullable) GTLRDateTime *beginTime;

/**
 *  Output only. Category under which this violation is mapped. e.g. Location,
 *  Service Usage, Access, Encryption, etc.
 */
@property(nonatomic, copy, nullable) NSString *category;

/**
 *  Output only. Description for the Violation. e.g. OrgPolicy
 *  gcp.resourceLocations has non compliant value.
 *
 *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
 */
@property(nonatomic, copy, nullable) NSString *descriptionProperty;

/**
 *  Output only. Immutable. Audit Log link to find business justification
 *  provided for violation exception. Format:
 *  https://console.cloud.google.com/logs/query;query={logName}{protoPayload.resourceName}{protoPayload.methodName}{timeRange}{organization}
 */
@property(nonatomic, copy, nullable) NSString *exceptionAuditLogLink;

/**
 *  Output only. Immutable. Name of the Violation. Format:
 *  organizations/{organization}/locations/{location}/workloads/{workload_id}/violations/{violations_id}
 */
@property(nonatomic, copy, nullable) NSString *name;

/**
 *  Output only. Immutable. Name of the OrgPolicy which was modified with
 *  non-compliant change and resulted this violation. Format:
 *  projects/{project_number}/policies/{constraint_name}
 *  folders/{folder_id}/policies/{constraint_name}
 *  organizations/{organization_id}/policies/{constraint_name}
 */
@property(nonatomic, copy, nullable) NSString *nonCompliantOrgPolicy;

/**
 *  Output only. Immutable. The org-policy-constraint that was incorrectly
 *  changed, which resulted in this violation.
 */
@property(nonatomic, copy, nullable) NSString *orgPolicyConstraint;

/** Output only. Compliance violation remediation */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation *remediation;

/**
 *  Output only. Time of the event which fixed the Violation. If the violation
 *  is ACTIVE this will be empty.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *resolveTime;

/**
 *  Output only. State of the violation
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation_State_Exception
 *        Violation is Exception (Value: "EXCEPTION")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation_State_Resolved
 *        Violation is resolved. (Value: "RESOLVED")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation_State_StateUnspecified
 *        Unspecified state. (Value: "STATE_UNSPECIFIED")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Violation_State_Unresolved
 *        Violation is Unresolved (Value: "UNRESOLVED")
 */
@property(nonatomic, copy, nullable) NSString *state;

/** Output only. The last time when the Violation record was updated. */
@property(nonatomic, strong, nullable) GTLRDateTime *updateTime;

@end

/**
 *  Represents remediation guidance to resolve compliance violation for
 *  AssuredWorkload
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation : GTLRObject

/**
 *  Values that can resolve the violation For example: for list org policy
 *  violations, this will either be the list of allowed or denied values
 */
@property(nonatomic, strong, nullable) NSArray<NSString *> *compliantValues;

/** Required. Remediation instructions to resolve violations */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructions *instructions;

/**
 *  Output only. Reemediation type based on the type of org policy values
 *  violated
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationBooleanOrgPolicyViolation
 *        Remediation type for boolean org policy (Value:
 *        "REMEDIATION_BOOLEAN_ORG_POLICY_VIOLATION")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationListAllowedValuesOrgPolicyViolation
 *        Remediation type for list org policy which have allowed values in the
 *        monitoring rule (Value:
 *        "REMEDIATION_LIST_ALLOWED_VALUES_ORG_POLICY_VIOLATION")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationListDeniedValuesOrgPolicyViolation
 *        Remediation type for list org policy which have denied values in the
 *        monitoring rule (Value:
 *        "REMEDIATION_LIST_DENIED_VALUES_ORG_POLICY_VIOLATION")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationRestrictCmekCryptoKeyProjectsOrgPolicyViolation
 *        Remediation type for gcp.restrictCmekCryptoKeyProjects (Value:
 *        "REMEDIATION_RESTRICT_CMEK_CRYPTO_KEY_PROJECTS_ORG_POLICY_VIOLATION")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediation_RemediationType_RemediationTypeUnspecified
 *        Unspecified remediation type (Value: "REMEDIATION_TYPE_UNSPECIFIED")
 */
@property(nonatomic, copy, nullable) NSString *remediationType;

@end

/**
 *  Instructions to remediate violation
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructions : GTLRObject

/** Remediation instructions to resolve violation via cloud console */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructionsConsole *consoleInstructions;

/** Remediation instructions to resolve violation via gcloud cli */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructionsGcloud *gcloudInstructions;

@end

/**
 *  Remediation instructions to resolve violation via cloud console
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructionsConsole : GTLRObject

/** Additional urls for more information about steps */
@property(nonatomic, strong, nullable) NSArray<NSString *> *additionalLinks;

/** Link to console page where violations can be resolved */
@property(nonatomic, strong, nullable) NSArray<NSString *> *consoleUris;

/** Steps to resolve violation via cloud console */
@property(nonatomic, strong, nullable) NSArray<NSString *> *steps;

@end

/**
 *  Remediation instructions to resolve violation via gcloud cli
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1ViolationRemediationInstructionsGcloud : GTLRObject

/** Additional urls for more information about steps */
@property(nonatomic, strong, nullable) NSArray<NSString *> *additionalLinks;

/** Gcloud command to resolve violation */
@property(nonatomic, strong, nullable) NSArray<NSString *> *gcloudCommands;

/** Steps to resolve violation via gcloud cli */
@property(nonatomic, strong, nullable) NSArray<NSString *> *steps;

@end

/**
 *  A Workload object for managing highly regulated workloads of cloud
 *  customers.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload : GTLRObject

/**
 *  Optional. The billing account used for the resources which are direct
 *  children of workload. This billing account is initially associated with the
 *  resources created as part of Workload creation. After the initial creation
 *  of these resources, the customer can change the assigned billing account.
 *  The resource name has the form `billingAccounts/{billing_account_id}`. For
 *  example, `billingAccounts/012345-567890-ABCDEF`.
 */
@property(nonatomic, copy, nullable) NSString *billingAccount;

/**
 *  Required. Immutable. Compliance Regime associated with this workload.
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_AssuredWorkloadsForPartners
 *        Assured Workloads for Partners (Value:
 *        "ASSURED_WORKLOADS_FOR_PARTNERS")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_AuRegionsAndUsSupport
 *        Assured Workloads for Australia Regions and Support controls Available
 *        for public preview consumption. Don't create production workloads.
 *        (Value: "AU_REGIONS_AND_US_SUPPORT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_CaRegionsAndSupport
 *        Assured Workloads For Canada Regions and Support controls (Value:
 *        "CA_REGIONS_AND_SUPPORT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Cjis
 *        Criminal Justice Information Services (CJIS) Security policies.
 *        (Value: "CJIS")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_ComplianceRegimeUnspecified
 *        Unknown compliance regime. (Value: "COMPLIANCE_REGIME_UNSPECIFIED")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_EuRegionsAndSupport
 *        Assured Workloads For EU Regions and Support controls (Value:
 *        "EU_REGIONS_AND_SUPPORT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_FedrampHigh
 *        FedRAMP High data protection controls (Value: "FEDRAMP_HIGH")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_FedrampModerate
 *        FedRAMP Moderate data protection controls (Value: "FEDRAMP_MODERATE")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Hipaa
 *        Health Insurance Portability and Accountability Act controls (Value:
 *        "HIPAA")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Hitrust
 *        Health Information Trust Alliance controls (Value: "HITRUST")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Il4
 *        Information protection as per DoD IL4 requirements. (Value: "IL4")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_Itar
 *        International Traffic in Arms Regulations (Value: "ITAR")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_ComplianceRegime_UsRegionalAccess
 *        Assured Workloads For US Regions data protection controls (Value:
 *        "US_REGIONAL_ACCESS")
 */
@property(nonatomic, copy, nullable) NSString *complianceRegime;

/** Output only. Count of active Violations in the Workload. */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadComplianceStatus *complianceStatus;

/**
 *  Output only. Urls for services which are compliant for this Assured
 *  Workload, but which are currently disallowed by the ResourceUsageRestriction
 *  org policy. Invoke RestrictAllowedResources endpoint to allow your project
 *  developers to use these services in their environment."
 */
@property(nonatomic, strong, nullable) NSArray<NSString *> *compliantButDisallowedServices;

/** Output only. Immutable. The Workload creation timestamp. */
@property(nonatomic, strong, nullable) GTLRDateTime *createTime;

/**
 *  Required. The user-assigned display name of the Workload. When present it
 *  must be between 4 to 30 characters. Allowed characters are: lowercase and
 *  uppercase letters, numbers, hyphen, and spaces. Example: My Workload
 */
@property(nonatomic, copy, nullable) NSString *displayName;

/**
 *  Optional. Indicates the sovereignty status of the given workload. Currently
 *  meant to be used by Europe/Canada customers.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *enableSovereignControls;

/**
 *  Optional. ETag of the workload, it is calculated on the basis of the
 *  Workload contents. It will be used in Update & Delete operations.
 */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  Output only. Represents the KAJ enrollment state of the given workload.
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_KajEnrollmentState_KajEnrollmentStateComplete
 *        Complete State for KAJ Enrollment. (Value:
 *        "KAJ_ENROLLMENT_STATE_COMPLETE")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_KajEnrollmentState_KajEnrollmentStatePending
 *        Pending State for KAJ Enrollment. (Value:
 *        "KAJ_ENROLLMENT_STATE_PENDING")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_KajEnrollmentState_KajEnrollmentStateUnspecified
 *        Default State for KAJ Enrollment. (Value:
 *        "KAJ_ENROLLMENT_STATE_UNSPECIFIED")
 */
@property(nonatomic, copy, nullable) NSString *kajEnrollmentState;

/**
 *  Input only. Settings used to create a CMEK crypto key. When set, a project
 *  with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28,
 *  2022. In order to create a Keyring, callers should specify,
 *  ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.
 */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadKMSSettings *kmsSettings;

/** Optional. Labels applied to the workload. */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Labels *labels;

/**
 *  Optional. The resource name of the workload. Format:
 *  organizations/{organization}/locations/{location}/workloads/{workload}
 *  Read-only.
 */
@property(nonatomic, copy, nullable) NSString *name;

/**
 *  Optional. Compliance Regime associated with this workload.
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Partner_LocalControlsByS3ns
 *        S3NS regime/controls. (Value: "LOCAL_CONTROLS_BY_S3NS")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Partner_PartnerUnspecified
 *        Unknown partner regime/controls. (Value: "PARTNER_UNSPECIFIED")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Partner_SovereignControlsByTSystems
 *        TSystem regime/controls. (Value: "SOVEREIGN_CONTROLS_BY_T_SYSTEMS")
 */
@property(nonatomic, copy, nullable) NSString *partner;

/**
 *  Input only. The parent resource for the resources managed by this Assured
 *  Workload. May be either empty or a folder resource which is a child of the
 *  Workload parent. If not specified all resources are created under the parent
 *  organization. Format: folders/{folder_id}
 */
@property(nonatomic, copy, nullable) NSString *provisionedResourcesParent;

/**
 *  Output only. The resources associated with this workload. These resources
 *  will be created when creating the workload. If any of the projects already
 *  exist, the workload creation will fail. Always read only.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo *> *resources;

/**
 *  Input only. Resource properties that are used to customize workload
 *  resources. These properties (such as custom project id) will be used to
 *  create workload resources if possible. This field is optional.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings *> *resourceSettings;

/**
 *  Output only. Represents the SAA enrollment response of the given workload.
 *  SAA enrollment response is queried during GetWorkload call. In failure
 *  cases, user friendly error message is shown in SAA details page.
 */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse *saaEnrollmentResponse;

@end

/**
 *  Optional. Labels applied to the workload.
 *
 *  @note This class is documented as having more properties of NSString. Use @c
 *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
 *        of properties and then fetch them; or @c -additionalProperties to
 *        fetch them all at once.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1Workload_Labels : GTLRObject
@end

/**
 *  Represents the Compliance Status of this workload
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadComplianceStatus : GTLRObject

/**
 *  Count of active Violations which are acknowledged in the Workload.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *acknowledgedViolationCount;

/**
 *  Count of active Violations which haven't been acknowledged.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *activeViolationCount;

@end

/**
 *  Settings specific to the Key Management Service. This message is deprecated.
 *  In order to create a Keyring, callers should specify,
 *  ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadKMSSettings : GTLRObject

/**
 *  Required. Input only. Immutable. The time at which the Key Management
 *  Service will automatically create a new version of the crypto key and mark
 *  it as the primary.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *nextRotationTime;

/**
 *  Required. Input only. Immutable. [next_rotation_time] will be advanced by
 *  this period when the Key Management Service automatically rotates a key.
 *  Must be at least 24 hours and at most 876,000 hours.
 */
@property(nonatomic, strong, nullable) GTLRDuration *rotationPeriod;

@end

/**
 *  Represent the resources that are children of this Workload.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo : GTLRObject

/**
 *  Resource identifier. For a project this represents project_number.
 *
 *  Uses NSNumber of longLongValue.
 */
@property(nonatomic, strong, nullable) NSNumber *resourceId;

/**
 *  Indicates the type of resource.
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_ConsumerFolder
 *        Consumer Folder. (Value: "CONSUMER_FOLDER")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_ConsumerProject
 *        Consumer project. AssuredWorkloads Projects are no longer supported.
 *        This field will be ignored only in CreateWorkload requests.
 *        ListWorkloads and GetWorkload will continue to provide projects
 *        information. Use CONSUMER_FOLDER instead. (Value: "CONSUMER_PROJECT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_EncryptionKeysProject
 *        Consumer project containing encryption keys. (Value:
 *        "ENCRYPTION_KEYS_PROJECT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_Keyring
 *        Keyring resource that hosts encryption keys. (Value: "KEYRING")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceInfo_ResourceType_ResourceTypeUnspecified
 *        Unknown resource type. (Value: "RESOURCE_TYPE_UNSPECIFIED")
 */
@property(nonatomic, copy, nullable) NSString *resourceType;

@end

/**
 *  Represent the custom settings for the resources to be created.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings : GTLRObject

/**
 *  User-assigned resource display name. If not empty it will be used to create
 *  a resource with the specified name.
 */
@property(nonatomic, copy, nullable) NSString *displayName;

/**
 *  Resource identifier. For a project this represents project_id. If the
 *  project is already taken, the workload creation will fail. For KeyRing, this
 *  represents the keyring_id. For a folder, don't set this value as folder_id
 *  is assigned by Google.
 */
@property(nonatomic, copy, nullable) NSString *resourceId;

/**
 *  Indicates the type of resource. This field should be specified to correspond
 *  the id to the right resource type (CONSUMER_FOLDER or
 *  ENCRYPTION_KEYS_PROJECT)
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_ConsumerFolder
 *        Consumer Folder. (Value: "CONSUMER_FOLDER")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_ConsumerProject
 *        Consumer project. AssuredWorkloads Projects are no longer supported.
 *        This field will be ignored only in CreateWorkload requests.
 *        ListWorkloads and GetWorkload will continue to provide projects
 *        information. Use CONSUMER_FOLDER instead. (Value: "CONSUMER_PROJECT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_EncryptionKeysProject
 *        Consumer project containing encryption keys. (Value:
 *        "ENCRYPTION_KEYS_PROJECT")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_Keyring
 *        Keyring resource that hosts encryption keys. (Value: "KEYRING")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadResourceSettings_ResourceType_ResourceTypeUnspecified
 *        Unknown resource type. (Value: "RESOURCE_TYPE_UNSPECIFIED")
 */
@property(nonatomic, copy, nullable) NSString *resourceType;

@end

/**
 *  Signed Access Approvals (SAA) enrollment response.
 */
@interface GTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse : GTLRObject

/** Indicates SAA enrollment setup error if any. */
@property(nonatomic, strong, nullable) NSArray<NSString *> *setupErrors;

/**
 *  Indicates SAA enrollment status of a given workload.
 *
 *  Likely values:
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupStatus_SetupStateUnspecified
 *        Unspecified. (Value: "SETUP_STATE_UNSPECIFIED")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupStatus_StatusComplete
 *        SAA enrollment comopleted. (Value: "STATUS_COMPLETE")
 *    @arg @c kGTLRAssuredworkloads_GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse_SetupStatus_StatusPending
 *        SAA enrollment pending. (Value: "STATUS_PENDING")
 */
@property(nonatomic, copy, nullable) NSString *setupStatus;

@end

/**
 *  The response message for Operations.ListOperations.
 *
 *  @note This class supports NSFastEnumeration and indexed subscripting over
 *        its "operations" property. If returned as the result of a query, it
 *        should support automatic pagination (when @c shouldFetchNextPages is
 *        enabled).
 */
@interface GTLRAssuredworkloads_GoogleLongrunningListOperationsResponse : GTLRCollectionObject

/** The standard List next-page token. */
@property(nonatomic, copy, nullable) NSString *nextPageToken;

/**
 *  A list of operations that matches the specified filter in the request.
 *
 *  @note This property is used to support NSFastEnumeration and indexed
 *        subscripting on this class.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRAssuredworkloads_GoogleLongrunningOperation *> *operations;

@end

/**
 *  This resource represents a long-running operation that is the result of a
 *  network API call.
 */
@interface GTLRAssuredworkloads_GoogleLongrunningOperation : GTLRObject

/**
 *  If the value is `false`, it means the operation is still in progress. If
 *  `true`, the operation is completed, and either `error` or `response` is
 *  available.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *done;

/** The error result of the operation in case of failure or cancellation. */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleRpcStatus *error;

/**
 *  Service-specific metadata associated with the operation. It typically
 *  contains progress information and common metadata such as create time. Some
 *  services might not provide such metadata. Any method that returns a
 *  long-running operation should document the metadata type, if any.
 */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleLongrunningOperation_Metadata *metadata;

/**
 *  The server-assigned name, which is only unique within the same service that
 *  originally returns it. If you use the default HTTP mapping, the `name`
 *  should be a resource name ending with `operations/{unique_id}`.
 */
@property(nonatomic, copy, nullable) NSString *name;

/**
 *  The normal response of the operation in case of success. If the original
 *  method returns no data on success, such as `Delete`, the response is
 *  `google.protobuf.Empty`. If the original method is standard
 *  `Get`/`Create`/`Update`, the response should be the resource. For other
 *  methods, the response should have the type `XxxResponse`, where `Xxx` is the
 *  original method name. For example, if the original method name is
 *  `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
 */
@property(nonatomic, strong, nullable) GTLRAssuredworkloads_GoogleLongrunningOperation_Response *response;

@end

/**
 *  Service-specific metadata associated with the operation. It typically
 *  contains progress information and common metadata such as create time. Some
 *  services might not provide such metadata. Any method that returns a
 *  long-running operation should document the metadata type, if any.
 *
 *  @note This class is documented as having more properties of any valid JSON
 *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
 *        get the list of properties and then fetch them; or @c
 *        -additionalProperties to fetch them all at once.
 */
@interface GTLRAssuredworkloads_GoogleLongrunningOperation_Metadata : GTLRObject
@end

/**
 *  The normal response of the operation in case of success. If the original
 *  method returns no data on success, such as `Delete`, the response is
 *  `google.protobuf.Empty`. If the original method is standard
 *  `Get`/`Create`/`Update`, the response should be the resource. For other
 *  methods, the response should have the type `XxxResponse`, where `Xxx` is the
 *  original method name. For example, if the original method name is
 *  `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
 *
 *  @note This class is documented as having more properties of any valid JSON
 *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
 *        get the list of properties and then fetch them; or @c
 *        -additionalProperties to fetch them all at once.
 */
@interface GTLRAssuredworkloads_GoogleLongrunningOperation_Response : GTLRObject
@end

/**
 *  A generic empty message that you can re-use to avoid defining duplicated
 *  empty messages in your APIs. A typical example is to use it as the request
 *  or the response type of an API method. For instance: service Foo { rpc
 *  Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
 */
@interface GTLRAssuredworkloads_GoogleProtobufEmpty : GTLRObject
@end

/**
 *  The `Status` type defines a logical error model that is suitable for
 *  different programming environments, including REST APIs and RPC APIs. It is
 *  used by [gRPC](https://github.com/grpc). Each `Status` message contains
 *  three pieces of data: error code, error message, and error details. You can
 *  find out more about this error model and how to work with it in the [API
 *  Design Guide](https://cloud.google.com/apis/design/errors).
 */
@interface GTLRAssuredworkloads_GoogleRpcStatus : GTLRObject

/**
 *  The status code, which should be an enum value of google.rpc.Code.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *code;

/**
 *  A list of messages that carry the error details. There is a common set of
 *  message types for APIs to use.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRAssuredworkloads_GoogleRpcStatus_Details_Item *> *details;

/**
 *  A developer-facing error message, which should be in English. Any
 *  user-facing error message should be localized and sent in the
 *  google.rpc.Status.details field, or localized by the client.
 */
@property(nonatomic, copy, nullable) NSString *message;

@end

/**
 *  GTLRAssuredworkloads_GoogleRpcStatus_Details_Item
 *
 *  @note This class is documented as having more properties of any valid JSON
 *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
 *        get the list of properties and then fetch them; or @c
 *        -additionalProperties to fetch them all at once.
 */
@interface GTLRAssuredworkloads_GoogleRpcStatus_Details_Item : GTLRObject
@end

NS_ASSUME_NONNULL_END

#pragma clang diagnostic pop


text:
var Try = require('try');

function log() {
  if (process.env.FDI_ENV === 'development') {
    console.log.apply(console, arguments);
  }
  return log;
}

module.exports.create = function () {
  /*~ We define the internal store for our resources with few helper functions such as
   `add(...)` or `get(...)` ...*/
  var store = {
    resources: Object.create(null),
    add: function (name, type, constructorFunction) {
      this.resources[name] = {
        name: name,
        type: type,
        constructorFunction: constructorFunction
      };
    },
    get: function (name) {
      return this.resources[name];
    },
    eachBean: function (callback, thisArg) {
      log('each bean function');
      Object.keys(this.resources).forEach(function forKeyInStore(key) {
        var objDefinition = this.resources[key];

        if (objDefinition.type === 'bean') {
          callback.call(thisArg, objDefinition);
        }
      }, this);
    }
  };

  return {
    log: log,
    initResource: function (resourceDefinition) {
      log('init resource', resourceDefinition.name);
      var t = resourceDefinition.constructorFunction.call(this, this);

      return t
      (function (instance) {
        resourceDefinition.instance = instance;
        log('resource instantiated ' + resourceDefinition.name);
        return instance;
      });
    },
    try: function (fn) {
      var t = new Try(fn);
      t.fdi = this;
      return t;
    },
    provide: function (provideFunction) {
      return this.try(provideFunction)
      (function () {
        log('for each bean');
        store.eachBean(function forEachBean(bean) {
          log('provide run init resource', bean.name);
          this.fdi.initResource(bean)(this.pause()).run();
        }, this);
      });
    },
    proto: function (name) {
      var t = this.try();
      store.add(name, 'proto', t);
      return t;
    },
    shared: function (name) {
      var t = this.try();
      store.add(name, 'shared', t);
      return t;
    },
    bean: function (name) {
      var t = this.try();
      store.add(name, 'bean', t);
      return t;
    },
    get: function (resources) {
      var di = this;
      var hash = Object.create(null);

      log('get all', resources);

      if (typeof resources === 'string') {
        return this.getOne(resources);
      }
      log('creating `get()` Try');
      return this.try
      (function () {
        log('pausing for ' + resources.length + ' executions');
        resources.forEach(function (resource) {
          log('get all for each at', resource);
          di.getOne(resource)(function (instance) {
              hash[resource] = instance;
            })(this.pause()).run();
        }, this);
      })
      (function () {
        return hash;
      });
    },
    getOne: function (name) {
      var di = this;

      log('getting', name);

      return this.try(function () {
        log('running `get()` Try');
        var resource = store.get(name);
        if (!resource) {
          throw new Error('Resource ' + name + ' not found in FDI');
        }

        if (resource.type === 'shared' && !resource.instance) {
          log('run initResource() for shared resource', resource.name);
          return di.initResource(resource)(this.pause()).run();
        } else if (resource.type === 'proto') {
          log('run initResource for proto resource', resource.name);
          return di.initResource(resource)(this.pause()).run();
        }

        log('returning instantiated ' + resource.type + ' resource', resource.name);

        /*~ if resource.type is `bean` the resource.instance is already present */
        return resource.instance;
      });
    }
  }
};

redpajama_set_name: RedPajamaGithub


text:
'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

var _Timeline = require('./lib/Timeline');

var _Timeline2 = _interopRequireDefault(_Timeline);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = _Timeline2.default;


text:
package com.cinchapi.concourse.server.plugin;

/**
 * A {@link RuntimeException} that indicates an error occurred with a plugin
 * operation.
 *
 * @author Jeff Nelson
 */
public class PluginException extends RuntimeException {

    /**
     * Construct a new instance.
     *
     * @param message
     */
    public PluginException(String message) {
        super(message);
    }

    private static final long serialVersionUID = 1L;

}


text:
1,Routing and templating in NW.js
you can also write a very simple view loader
yourself as, in a desktop application, you won't need to change URLs:

If you don't want to rely on a web
application framework but rather keep using a Node.js template engine, you can easily
do it directly from the DOM. Let's review the loadView() function of the previous
example in order to load Swig templates:

	myApp.loadSwigView = function (view, data) {
	var fileName = 'views/' + view + '.html',
	swig = require('swig');
	return swig.renderFile(fileName, data||{});
	};
	// Loading views/swigTemplate.html
	var template = myApp.loadSwigView('swigTemplate', {
	pagename: 'awesome people',
	authors: ['Paul', 'Jim', 'Jane']
	});
	$('#mainView').html(template)

2,Node.js global and process objects

In NW.js, the global object works much like it does in Node.js with the peculiarity
of being accessible from within the DOM, giving an additional way to share objects
between the window and Node.js contexts.
 Moreover, when the window object is created,
all the members of the global object are assigned to it, which is why you can use
require() from within the DOM.

The process object is a global object that can be accessed from both the window and
Node.js contexts. In NW.js, some new fields have been added to it:

- • process.versions['NW.js']: This gets the NW.js version
- • process.versions['chromium']: This gets the NW.js chromium version
- • process.mainModule: This gets the start page (such as index.html)
   specified in the manifest file's main field
If node-main has been specified in the manifest file, process.mainModule points to
the specified file.

3,The window object

When all the initial stuff has been done, as soon as it's ready, the window object is
passed to Node.js inside the global object so that you can reference it in a module as global.window or simply window. The window reference is then replaced with a new
one on page navigation.

4.Using NW.js' main module
The node-main field acts similarly, but instead of referring to an HTML file, it will
allow you to set a main Node.js module, which will run in the background through the
application's life cycle independently of the window context (even though it will quit by default when all the application windows are closed).

Thanks to the global object, the window object is also shared
with the main module, but you can't obviously access it until a
ready signal is sent from the DOM.

5,Handling paths in NW.js
Application root
- data/myData.json
- js/script.js
- modules/myModule.js
- modules/otherModule.js
- index.html
- package.json

(1)realtive path

	require('./modules/myModule');

When calling a module from another module, however, you should use the relative
path from the current file.

	require('./otherModule');

	var fs = require('fs');
	fs.readFile('data/myData.json', 'utf8', function (err, data) {
	console.log(JSON.parse(data));
});

(2) absolute path

There are two ways to get the absolute path of the application root folder. You
might, of course, call window.location.pathname on index.html, but there's a
much better Node.js way to do it. Node.js provides a __dirname global object,

However, in order to use __dirname inside the window context,
we can provide a simple workaround. We can create a util.js module inside the
application root folder:

	exports.dirname = __dirname;

(3)normalize

	var path = require('path');
	console.log(path.normalize('/my/custom/folder'));
On Mac OS X or Linux, path.**normalize**() will return /my/custom/folder, but on
Microsoft Windows, it will return \\my\\custom\\folder

6.NW.js context issues

One more thing that might be very confusing at first is that the same objects from
different contexts also have different constructors in their prototype chain. That
results in misbehavior of the instanceof operator, which will not be able to recognize
prototypes coming from a different context.

Let's check an example:

	• nodeContext.js:
	exports.myArray = ['one','two','three'];
	• index.html:
	var windowContext = {
	myArray: ['one','two','three']
	};
	// First statement
	console.log(windowContext.myArray instanceof Array); //
	true
	var nodeContext = require('./nodeContext');
// Second statement
console.log(nodeContext.myArray instanceof Array); // false
As illustrated, we're getting different results despite it looking like we're checking for
the very same array object. A faster way to avoid this kind of problem is to get rid of
instanceof in favor of a more reliable alternative, such as Array.isArray. If you
can't afford it, you can take advantage of the nwglobal module (https://github.
com/Mithgol/nwglobal).
A very simple way to export Node.js constructors is provided by nwglobal in order
to avoid instanceof issues in both the window and Node.js contexts. Let's review
the second statement of the previous example:
var nwglobal = require('nwglobal');
console.log(nodeContext.myArray instanceof nwglobal.Array); //true
This time, the statement will return true as we get the right constructor with
nwglobal.Array.

7.Working with Node.js modules
One of the strengths of Node.js is surely the availability of tens of thousands of
modules that are freely downloadable with npm. As you probably know already,
Node.js supports three kinds of modules:
• Internal modules, which are parts of Node API
• Third-party modules written in JavaScript
• Third-party modules with C/C++ add-ons

1. Install nw-gip with the following command:
npm install nw-gyp –g

	On Mac OS X, the only requirement is to install Xcode command-line
	tools; on other operating systems, you'll have to manually install Python,
	Make, and a proper C/C++ compiler. You can find more information
	about this at https://github.com/nwjs/nw-gyp.

2. Install your module as usual with npm.
3. Run nw-gip in the module folder (where the binding.gyp file is located),
providing the NW.js target version:
$ nw-gyp rebuild --target=0.11.2
4. That's it. Now you can require your module as usual:
   var modulename = require('modulename');


text:
package iot

import (
	"context"
	"time"

	"github.com/fatih/color"
	"github.com/scaleway/scaleway-cli/v2/internal/core"
	"github.com/scaleway/scaleway-cli/v2/internal/human"
	"github.com/scaleway/scaleway-sdk-go/api/iot/v1"
	"github.com/scaleway/scaleway-sdk-go/scw"
)

const (
	hubActionTimeout = 5 * time.Minute
)

var (
	hubStatusMarshalSpecs = human.EnumMarshalSpecs{
		iot.HubStatusDisabled:  &human.EnumMarshalSpec{Attribute: color.FgRed, Value: "disabled"},
		iot.HubStatusDisabling: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "disabling"},
		iot.HubStatusEnabling:  &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "enabling"},
		iot.HubStatusError:     &human.EnumMarshalSpec{Attribute: color.FgRed, Value: "error"},
		iot.HubStatusReady:     &human.EnumMarshalSpec{Attribute: color.FgGreen, Value: "ready"},
	}
)

func hubCreateBuilder(c *core.Command) *core.Command {
	c.WaitFunc = func(ctx context.Context, argsI, respI interface{}) (interface{}, error) {
		api := iot.NewAPI(core.ExtractClient(ctx))
		return api.WaitForHub(&iot.WaitForHubRequest{
			HubID:         respI.(*iot.Hub).ID,
			Region:        respI.(*iot.Hub).Region,
			Timeout:       scw.TimeDurationPtr(hubActionTimeout),
			RetryInterval: core.DefaultRetryInterval,
		})
	}
	return c
}


text:
<?php

namespace Graze\DataFile\Node;

use Graze\DataFile\Node\FileSystem\FilesystemWrapperInterface;
use Graze\DataNode\NodeInterface;

interface FileNodeInterface extends NodeInterface
{
    /**
     * @return string
     */
    public function getDirectory();

    /**
     * @return string
     */
    public function getPath();

    /**
     * @return string
     */
    public function getFilename();

    /**
     * Returns the contents of the file as an array.
     *
     * @return array
     */
    public function getContents();

    /**
     * Read the file.
     *
     * @return string file contents
     */
    public function read();

    /**
     * Read the file as a stream.
     *
     * @return resource file stream
     */
    public function readStream();

    /**
     * Write the new file.
     *
     * @param string $content
     *
     * @return bool success boolean
     */
    public function write($content);

    /**
     * Write the new file using a stream.
     *
     * @param resource $resource
     *
     * @return bool success boolean
     */
    public function writeStream($resource);

    /**
     * Update the file contents.
     *
     * @param string $content
     *
     * @return bool success boolean
     */
    public function update($content);

    /**
     * Update the file contents with a stream.
     *
     * @param resource $resource
     *
     * @return bool success boolean
     */
    public function updateStream($resource);

    /**
     * Create the file or update if exists.
     *
     * @param string $content
     *
     * @return bool success boolean
     */
    public function put($content);

    /**
     * Create the file or update if exists using a stream.
     *
     * @param resource $resource
     *
     * @return bool success boolean
     */
    public function putStream($resource);

    /**
     * @return bool
     */
    public function exists();

    /**
     * @return bool
     */
    public function delete();

    /**
     * @return FilesystemWrapperInterface
     */
    public function getFilesystem();
}


text:
<?php
if(!defined('OSTSCPINC') || !$thisstaff || !@$thisstaff->isStaff()) die('Access Denied');

$qstr='&'; //Query string collector
if($_REQUEST['status']) { //Query string status has nothing to do with the real status used below; gets overloaded.
    $qstr.='status='.urlencode($_REQUEST['status']);
}

//See if this is a search
$search=($_REQUEST['a']=='search');
$searchTerm='';
//make sure the search query is 3 chars min...defaults to no query with warning message
if($search) {
  $searchTerm=$_REQUEST['query'];
  if( ($_REQUEST['query'] && strlen($_REQUEST['query'])<3)
      || (!$_REQUEST['query'] && isset($_REQUEST['basic_search'])) ){ //Why do I care about this crap...
      $search=false; //Instead of an error page...default back to regular query..with no search.
      $errors['err']='Search term must be more than 3 chars';
      $searchTerm='';
  }
}
$showoverdue=$showanswered=false;
$staffId=0; //Nothing for now...TODO: Allow admin and manager to limit tickets to single staff level.
$showassigned= true; //show Assigned To column - defaults to true

//Get status we are actually going to use on the query...making sure it is clean!
$status=null;
switch(strtolower($_REQUEST['status'])){ //Status is overloaded
    case 'open':
        $status='open';
        break;
    case 'closed':
        $status='closed';
        $showassigned=true; //closed by.
        break;
    case 'overdue':
        $status='open';
        $showoverdue=true;
        $results_type='Overdue Tickets';
        break;
    case 'assigned':
        $status='open';
        $staffId=$thisstaff->getId();
        $results_type='My Tickets';
        break;
    case 'answered':
        $status='open';
        $showanswered=true;
        $results_type='Answered Tickets';
        break;
    default:
        if(!$search && !isset($_REQUEST['advsid']))
            $_REQUEST['status']=$status='open';
}

$qwhere ='';
/*
   STRICT DEPARTMENTS BASED PERMISSION!
   User can also see tickets assigned to them regardless of the ticket's dept.
*/

$depts=$thisstaff->getDepts();
$qwhere =' WHERE ( '
        .'  ( ticket.staff_id='.db_input($thisstaff->getId())
        .' AND ticket.status="open")';

if(!$thisstaff->showAssignedOnly())
    $qwhere.=' OR ticket.dept_id IN ('.($depts?implode(',', db_input($depts)):0).')';

if(($teams=$thisstaff->getTeams()) && count(array_filter($teams)))
    $qwhere.=' OR (ticket.team_id IN ('.implode(',', db_input(array_filter($teams)))
            .') AND ticket.status="open")';

$qwhere .= ' )';

//STATUS
if($status) {
    $qwhere.=' AND ticket.status='.db_input(strtolower($status));
}

if (isset($_REQUEST['uid']) && $_REQUEST['uid']) {
    $qwhere .= ' AND (ticket.user_id='.db_input($_REQUEST['uid'])
            .' OR collab.user_id='.db_input($_REQUEST['uid']).') ';
    $qstr .= '&uid='.urlencode($_REQUEST['uid']);
}

//Queues: Overloaded sub-statuses  - you've got to just have faith!
if($staffId && ($staffId==$thisstaff->getId())) { //My tickets
    $results_type='Assigned Tickets';
    $qwhere.=' AND ticket.staff_id='.db_input($staffId);
    $showassigned=false; //My tickets...already assigned to the staff.
}elseif($showoverdue) { //overdue
    $qwhere.=' AND ticket.isoverdue=1 ';
}elseif($showanswered) { ////Answered
    $qwhere.=' AND ticket.isanswered=1 ';
}elseif(!strcasecmp($status, 'open') && !$search) { //Open queue (on search OPEN means all open tickets - regardless of state).
    //Showing answered tickets on open queue??
    if(!$cfg->showAnsweredTickets())
        $qwhere.=' AND ticket.isanswered=0 ';

    /* Showing assigned tickets on open queue?
       Don't confuse it with show assigned To column -> F'it it's confusing - just trust me!
     */
    if(!($cfg->showAssignedTickets() || $thisstaff->showAssignedTickets())) {
        $qwhere.=' AND ticket.staff_id=0 '; //XXX: NOT factoring in team assignments - only staff assignments.
        $showassigned=false; //Not showing Assigned To column since assigned tickets are not part of open queue
    }
}

//Search?? Somebody...get me some coffee
$deep_search=false;
if($search):
    $qstr.='&a='.urlencode($_REQUEST['a']);
    $qstr.='&t='.urlencode($_REQUEST['t']);

    //query
    if($searchTerm){
        $qstr.='&query='.urlencode($searchTerm);
        $queryterm=db_real_escape($searchTerm,false); //escape the term ONLY...no quotes.
        if (is_numeric($searchTerm)) {
            $qwhere.=" AND ticket.`number` LIKE '$queryterm%'";
        } elseif (strpos($searchTerm,'@') && Validator::is_email($searchTerm)) {
            //pulling all tricks!
            # XXX: What about searching for email addresses in the body of
            #      the thread message
            $qwhere.=" AND email.address='$queryterm'";
        } else {//Deep search!
            //This sucks..mass scan! search anything that moves!
            require_once(INCLUDE_DIR.'ajax.tickets.php');

            $tickets = TicketsAjaxApi::_search(array('query'=>$queryterm));
            if (count($tickets))
                $qwhere .= ' AND ticket.ticket_id IN ('.
                    implode(',',db_input($tickets)).')';
            else
                // No hits -- there should be an empty list of results
                $qwhere .= ' AND false';
        }
   }

endif;

if ($_REQUEST['advsid'] && isset($_SESSION['adv_'.$_REQUEST['advsid']])) {
    $qstr.='advsid='.$_REQUEST['advsid'];
    $qwhere .= ' AND ticket.ticket_id IN ('. implode(',',
        db_input($_SESSION['adv_'.$_REQUEST['advsid']])).')';
}

$sortOptions=array('date'=>'effective_date','ID'=>'ticket.`number`',
    'pri'=>'pri.priority_urgency','name'=>'user.name','subj'=>'cdata.subject',
    'status'=>'ticket.status','assignee'=>'assigned','staff'=>'staff',
    'dept'=>'dept.dept_name');

$orderWays=array('DESC'=>'DESC','ASC'=>'ASC');

//Sorting options...
$queue = isset($_REQUEST['status'])?strtolower($_REQUEST['status']):$status;
$order_by=$order=null;
if($_REQUEST['sort'] && $sortOptions[$_REQUEST['sort']])
    $order_by =$sortOptions[$_REQUEST['sort']];
elseif($sortOptions[$_SESSION[$queue.'_tickets']['sort']]) {
    $_REQUEST['sort'] = $_SESSION[$queue.'_tickets']['sort'];
    $_REQUEST['order'] = $_SESSION[$queue.'_tickets']['order'];

    $order_by = $sortOptions[$_SESSION[$queue.'_tickets']['sort']];
    $order = $_SESSION[$queue.'_tickets']['order'];
}

if($_REQUEST['order'] && $orderWays[strtoupper($_REQUEST['order'])])
    $order=$orderWays[strtoupper($_REQUEST['order'])];

//Save sort order for sticky sorting.
if($_REQUEST['sort'] && $queue) {
    $_SESSION[$queue.'_tickets']['sort'] = $_REQUEST['sort'];
    $_SESSION[$queue.'_tickets']['order'] = $_REQUEST['order'];
}

//Set default sort by columns.
if(!$order_by ) {
    if($showanswered)
        $order_by='ticket.lastresponse, ticket.created'; //No priority sorting for answered tickets.
    elseif(!strcasecmp($status,'closed'))
        $order_by='ticket.closed, ticket.created'; //No priority sorting for closed tickets.
    elseif($showoverdue) //priority> duedate > age in ASC order.
        $order_by='pri.priority_urgency ASC, ISNULL(ticket.duedate) ASC, ticket.duedate ASC, effective_date ASC, ticket.created';
    else //XXX: Add due date here?? No -
        $order_by='pri.priority_urgency ASC, effective_date DESC, ticket.created';
}

$order=$order?$order:'DESC';
if($order_by && strpos($order_by,',') && $order)
    $order_by=preg_replace('/(?<!ASC|DESC),/', " $order,", $order_by);

$sort=$_REQUEST['sort']?strtolower($_REQUEST['sort']):'pri.priority_urgency'; //Urgency is not on display table.
$x=$sort.'_sort';
$$x=' class="'.strtolower($order).'" ';

if($_GET['limit'])
    $qstr.='&limit='.urlencode($_GET['limit']);

$qselect ='SELECT ticket.ticket_id,tlock.lock_id,ticket.`number`,ticket.dept_id,ticket.staff_id,ticket.team_id '
    .' ,user.name'
    .' ,email.address as email, dept.dept_name '
         .' ,ticket.status,ticket.source,ticket.isoverdue,ticket.isanswered,ticket.created ';

$qfrom=' FROM '.TICKET_TABLE.' ticket '.
       ' LEFT JOIN '.USER_TABLE.' user ON user.id = ticket.user_id'.
       ' LEFT JOIN '.USER_EMAIL_TABLE.' email ON user.id = email.user_id'.
       ' LEFT JOIN '.DEPT_TABLE.' dept ON ticket.dept_id=dept.dept_id ';

if ($_REQUEST['uid'])
    $qfrom.=' LEFT JOIN '.TICKET_COLLABORATOR_TABLE.' collab
        ON (ticket.ticket_id = collab.ticket_id )';

$sjoin='';

if($search && $deep_search) {
    $sjoin.=' LEFT JOIN '.TICKET_THREAD_TABLE.' thread ON (ticket.ticket_id=thread.ticket_id )';
}

//get ticket count based on the query so far..
$total=db_count("SELECT count(DISTINCT ticket.ticket_id) $qfrom $sjoin $qwhere");
//pagenate
$pagelimit=($_GET['limit'] && is_numeric($_GET['limit']))?$_GET['limit']:PAGE_LIMIT;
$page=($_GET['p'] && is_numeric($_GET['p']))?$_GET['p']:1;
$pageNav=new Pagenate($total,$page,$pagelimit);
$pageNav->setURL('tickets.php',$qstr.'&sort='.urlencode($_REQUEST['sort']).'&order='.urlencode($_REQUEST['order']));

//ADD attachment,priorities, lock and other crap
$qselect.=' ,IF(ticket.duedate IS NULL,IF(sla.id IS NULL, NULL, DATE_ADD(ticket.created, INTERVAL sla.grace_period HOUR)), ticket.duedate) as duedate '
         .' ,CAST(GREATEST(IFNULL(ticket.lastmessage, 0), IFNULL(ticket.reopened, 0), ticket.created) as datetime) as effective_date '
         .' ,CONCAT_WS(" ", staff.firstname, staff.lastname) as staff, team.name as team '
         .' ,IF(staff.staff_id IS NULL,team.name,CONCAT_WS(" ", staff.lastname, staff.firstname)) as assigned '
         .' ,IF(ptopic.topic_pid IS NULL, topic.topic, CONCAT_WS(" / ", ptopic.topic, topic.topic)) as helptopic '
         .' ,cdata.priority_id, cdata.subject, pri.priority_desc, pri.priority_color';

$qfrom.=' LEFT JOIN '.TICKET_LOCK_TABLE.' tlock ON (ticket.ticket_id=tlock.ticket_id AND tlock.expire>NOW()
               AND tlock.staff_id!='.db_input($thisstaff->getId()).') '
       .' LEFT JOIN '.STAFF_TABLE.' staff ON (ticket.staff_id=staff.staff_id) '
       .' LEFT JOIN '.TEAM_TABLE.' team ON (ticket.team_id=team.team_id) '
       .' LEFT JOIN '.SLA_TABLE.' sla ON (ticket.sla_id=sla.id AND sla.isactive=1) '
       .' LEFT JOIN '.TOPIC_TABLE.' topic ON (ticket.topic_id=topic.topic_id) '
       .' LEFT JOIN '.TOPIC_TABLE.' ptopic ON (ptopic.topic_id=topic.topic_pid) '
       .' LEFT JOIN '.TABLE_PREFIX.'ticket__cdata cdata ON (cdata.ticket_id = ticket.ticket_id) '
       .' LEFT JOIN '.PRIORITY_TABLE.' pri ON (pri.priority_id = cdata.priority_id)';

TicketForm::ensureDynamicDataView();

$query="$qselect $qfrom $qwhere ORDER BY $order_by $order LIMIT ".$pageNav->getStart().",".$pageNav->getLimit();
//echo $query;
$hash = md5($query);
$_SESSION['search_'.$hash] = $query;
$res = db_query($query);
$showing=db_num_rows($res)?$pageNav->showing():"";
if(!$results_type)
    $results_type = ucfirst($status).' Tickets';

if($search)
    $results_type.= ' (Search Results)';

$negorder=$order=='DESC'?'ASC':'DESC'; //Negate the sorting..

// Fetch the results
$results = array();
while ($row = db_fetch_array($res)) {
    $results[$row['ticket_id']] = $row;
}

// Fetch attachment and thread entry counts
if ($results) {
    $counts_sql = 'SELECT ticket.ticket_id,
        count(DISTINCT attach.attach_id) as attachments,
        count(DISTINCT thread.id) as thread_count,
        count(DISTINCT collab.id) as collaborators
        FROM '.TICKET_TABLE.' ticket
        LEFT JOIN '.TICKET_ATTACHMENT_TABLE.' attach ON (ticket.ticket_id=attach.ticket_id) '
     .' LEFT JOIN '.TICKET_THREAD_TABLE.' thread ON ( ticket.ticket_id=thread.ticket_id) '
     .' LEFT JOIN '.TICKET_COLLABORATOR_TABLE.' collab
            ON ( ticket.ticket_id=collab.ticket_id) '
     .' WHERE ticket.ticket_id IN ('.implode(',', db_input(array_keys($results))).')
        GROUP BY ticket.ticket_id';
    $ids_res = db_query($counts_sql);
    while ($row = db_fetch_array($ids_res)) {
        $results[$row['ticket_id']] += $row;
    }
}

//YOU BREAK IT YOU FIX IT.
?>

    <form action="tickets.php" method="get">
    <?php csrf_token(); ?>
    <input type="hidden" name="a" value="search">

            <input type="text" id="basic-ticket-search" name="query" size=30 value="<?php echo Format::htmlchars($_REQUEST['query']); ?>"
                autocomplete="off" autocorrect="off" autocapitalize="off">
            <input type="submit" name="basic_search" class="button" value="Search">
              [advanced]

    </form>

<form action="tickets.php" method="POST" name='tickets'>
<?php csrf_token(); ?>
 <a class="refresh" href="<?php echo $_SERVER['REQUEST_URI']; ?>">Refresh
 <input type="hidden" name="a" value="mass_process" >
 <input type="hidden" name="do" id="action" value="" >
 <input type="hidden" name="status" value="<?php echo Format::htmlchars($_REQUEST['status']); ?>" >

<?php echo $showing; ?>   <?php echo $results_type; ?>

            <?php if($thisstaff->canManageTickets()) { ?>

            <?php } ?>

                <a <?php echo $id_sort; ?> href="tickets.php?sort=ID&order=<?php echo $negorder; ?><?php echo $qstr; ?>"
                    title="Sort By Ticket ID <?php echo $negorder; ?>">Ticket

                <a  <?php echo $date_sort; ?> href="tickets.php?sort=date&order=<?php echo $negorder; ?><?php echo $qstr; ?>"
                    title="Sort By Date <?php echo $negorder; ?>">Date

                 <a <?php echo $subj_sort; ?> href="tickets.php?sort=subj&order=<?php echo $negorder; ?><?php echo $qstr; ?>"
                    title="Sort By Subject <?php echo $negorder; ?>">Subject

                <a <?php echo $name_sort; ?> href="tickets.php?sort=name&order=<?php echo $negorder; ?><?php echo $qstr; ?>"
                     title="Sort By Name <?php echo $negorder; ?>">From
            <?php
            if($search && !$status) { ?>

                    <a <?php echo $status_sort; ?> href="tickets.php?sort=status&order=<?php echo $negorder; ?><?php echo $qstr; ?>"
                        title="Sort By Status <?php echo $negorder; ?>">Status
            <?php
            } else { ?>
                <th width="60" <?php echo $pri_sort;?>>
                    <a <?php echo $pri_sort; ?> href="tickets.php?sort=pri&order=<?php echo $negorder; ?><?php echo $qstr; ?>"
                        title="Sort By Priority <?php echo $negorder; ?>">Priority
            <?php
            }

            if($showassigned ) {
                //Closed by
                if(!strcasecmp($status,'closed')) { ?>

                        <a <?php echo $staff_sort; ?> href="tickets.php?sort=staff&order=<?php echo $negorder; ?><?php echo $qstr; ?>"
                            title="Sort By Closing Staff Name <?php echo $negorder; ?>">Closed By
                <?php
                } else { //assigned to ?>

                        <a <?php echo $assignee_sort; ?> href="tickets.php?sort=assignee&order=<?php echo $negorder; ?><?php echo $qstr; ?>"
                            title="Sort By Assignee <?php echo $negorder;?>">Assigned To
                <?php
                }
            } else { ?>

                    <a <?php echo $dept_sort; ?> href="tickets.php?sort=dept&order=<?php echo $negorder;?><?php echo $qstr; ?>"
                        title="Sort By Department <?php echo $negorder; ?>">Department
            <?php
            } ?>

        <?php
        $class = "row1";
        $total=0;
        if($res && ($num=count($results))):
            $ids=($errors && $_POST['tids'] && is_array($_POST['tids']))?$_POST['tids']:null;
            foreach ($results as $row) {
                $tag=$row['staff_id']?'assigned':'openticket';
                $flag=null;
                if($row['lock_id'])
                    $flag='locked';
                elseif($row['isoverdue'])
                    $flag='overdue';

                $lc='';
                if($showassigned) {
                    if($row['staff_id'])
                        $lc=sprintf('%s',Format::truncate($row['staff'],40));
                    elseif($row['team_id'])
                        $lc=sprintf('%s',Format::truncate($row['team'],40));
                    else
                        $lc=' ';
                }else{
                    $lc=Format::truncate($row['dept_name'],40);
                }
                $tid=$row['number'];
                $subject = Format::htmlchars(Format::truncate($row['subject'],40));
                $threadcount=$row['thread_count'];
                if(!strcasecmp($row['status'],'open') && !$row['isanswered'] && !$row['lock_id']) {
                    $tid=sprintf('%s',$tid);
                }
                ?>
            <tr id="<?php echo $row['ticket_id']; ?>">
                <?php if($thisstaff->canManageTickets()) {

                    $sel=false;
                    if($ids && in_array($row['ticket_id'], $ids))
                        $sel=true;
                    ?>

                    <input class="ckb" type="checkbox" name="tids[]" value="<?php echo $row['ticket_id']; ?>" <?php echo $sel?'checked="checked"':''; ?>>

                <?php } ?>
                <td align="center" title="<?php echo $row['email']; ?>" nowrap>
                  <a class="Icon <?php echo strtolower($row['source']); ?>Ticket ticketPreview" title="Preview Ticket"
                    href="tickets.php?id=<?php echo $row['ticket_id']; ?>"><?php echo $tid; ?>
                <?php echo Format::db_datetime($row['effective_date']); ?>
                <a <?php if ($flag) { ?> class="Icon <?php echo $flag; ?>Ticket" title="<?php echo ucfirst($flag); ?> Ticket" <?php } ?>
                    href="tickets.php?id=<?php echo $row['ticket_id']; ?>"><?php echo $subject; ?>
                     <?php
                        if ($threadcount>1)
                            echo "($threadcount) ".' ';
                        if ($row['collaborators'])
                            echo ' ';
                        if ($row['attachments'])
                            echo ' ';
                    ?>

                 <?php echo Format::truncate($row['name'],22,strpos($row['name'],'@')); ?>
                <?php
                if($search && !$status){
                    $displaystatus=ucfirst($row['status']);
                    if(!strcasecmp($row['status'],'open'))
                        $displaystatus="$displaystatus";
                    echo "$displaystatus	";
                } else { ?>
                <td class="nohover" align="center" style="background-color:<?php echo $row['priority_color']; ?>;">
                    <?php echo $row['priority_desc']; ?>
                <?php
                }
                ?>
                 <?php echo $lc; ?>

            <?php
            } //end of while.
        else: //not tickets found!! set fetch error.
            $ferror='There are no tickets here. (Leave a little early today).';
        endif; ?>

            <?php if($res && $num && $thisstaff->canManageTickets()){ ?>
            Select:
            All
            None
            Toggle
            <?php }else{
                echo '';
                echo $ferror?Format::htmlchars($ferror):'Query returned 0 results.';
                echo '';
            } ?>

    <?php
    if($num>0){ //if we actually had any tickets returned.
        echo '
 Page:'.$pageNav->getPageLinks().' ';
        echo 'Export
';
    ?>
        <?php
         if($thisstaff->canManageTickets()) { ?>

            <?php
            $status=$_REQUEST['status']?$_REQUEST['status']:$status;
            switch (strtolower($status)) {
                case 'closed': ?>
                    <input class="button" type="submit" name="reopen" value="Reopen" >
                    <?php
                    break;
                case 'open':
                case 'answered':
                case 'assigned':
                    ?>
                    <input class="button" type="submit" name="mark_overdue" value="Overdue" >
                    <input class="button" type="submit" name="close" value="Close">
                    <?php
                    break;
                case 'overdue':
                    ?>
                    <input class="button" type="submit" name="close" value="Close">
                    <?php
                    break;
                default: //search??
                    ?>
                    <input class="button" type="submit" name="close" value="Close" >
                    <input class="button" type="submit" name="reopen" value="Reopen">
            <?php
            }
            if($thisstaff->canDeleteTickets()) { ?>
                <input class="button" type="submit" name="delete" value="Delete">
            <?php } ?>

        <?php
       }
    } ?>
    </form>

Please Confirm

        Are you sure want to close selected open tickets?

        Are you sure want to reopen selected closed tickets?

        Are you sure want to flag the selected tickets as overdue?

        Are you sure you want to DELETE selected tickets?

Deleted tickets CANNOT be recovered, including any associated attachments.

Please confirm to continue.

            <input type="button" value="No, Cancel" class="close">

            <input type="button" value="Yes, Do it!" class="confirm">

Advanced Ticket Search

    <form action="tickets.php" method="post" id="search" name="search">
        <input type="hidden" name="a" value="search">
        <fieldset class="query">
            Keyword:
            <input type="input" id="query" name="query" size="20"> Optional
        </fieldset>
        <fieldset>
            Status:
            <select id="status" name="status">
                <option value="">— Any Status —</option>
                <option value="open">Open</option>
                <?php
                if(!$cfg->showAnsweredTickets()) {?>
                <option value="answered">Answered</option>
                <?php
                } ?>
                <option value="overdue">Overdue</option>
                <option value="closed">Closed</option>
            </select>
            Dept:
            <select id="deptId" name="deptId">
                <option value="">— All Departments —</option>
                <?php
                if(($mydepts = $thisstaff->getDepts()) && ($depts=Dept::getDepartments())) {
                    foreach($depts as $id =>$name) {
                        if(!in_array($id, $mydepts)) continue;
                        echo sprintf('<option value="%d">%s</option>', $id, $name);
                    }
                }
                ?>
            </select>
        </fieldset>
        <fieldset class="owner">
            Assigned To:
            <select id="assignee" name="assignee">
                <option value="">— Anyone —</option>
                <option value="0">— Unassigned —</option>
                <option value="<?php echo $thisstaff->getId(); ?>">Me</option>
                <?php
                if(($users=Staff::getStaffMembers())) {
                    echo '<OPTGROUP label="Staff Members ('.count($users).')">';
                    foreach($users as $id => $name) {
                        $k="s$id";
                        echo sprintf('<option value="%s">%s</option>', $k, $name);
                    }
                    echo '</OPTGROUP>';
                }

                if(($teams=Team::getTeams())) {
                    echo '<OPTGROUP label="Teams ('.count($teams).')">';
                    foreach($teams as $id => $name) {
                        $k="t$id";
                        echo sprintf('<option value="%s">%s</option>', $k, $name);
                    }
                    echo '</OPTGROUP>';
                }
                ?>
            </select>
            Closed By:
            <select id="staffId" name="staffId">
                <option value="0">— Anyone —</option>
                <option value="<?php echo $thisstaff->getId(); ?>">Me</option>
                <?php
                if(($users=Staff::getStaffMembers())) {
                    foreach($users as $id => $name)
                        echo sprintf('<option value="%d">%s</option>', $id, $name);
                }
                ?>
            </select>
        </fieldset>
        <fieldset>
            Help Topic:
            <select id="topicId" name="topicId">
                <option value="" selected >— All Help Topics —</option>
                <?php
                if($topics=Topic::getHelpTopics()) {
                    foreach($topics as $id =>$name)
                        echo sprintf('<option value="%d" >%s</option>', $id, $name);
                }
                ?>
            </select>
        </fieldset>
        <fieldset class="date_range">
            Date Range:
            <input class="dp" type="input" size="20" name="startDate">
            TO
            <input class="dp" type="input" size="20" name="endDate">
        </fieldset>
        <fieldset>
        <?php
        foreach (TicketForm::getInstance()->getFields() as $f) {
            if (in_array($f->get('type'), array('text', 'memo', 'phone', 'thread')))
                continue;
            elseif (!$f->hasData())
                continue;
            ?><?php echo $f->getLabel(); ?>:

<?php
                     $f->render('search'); ?>

        <?php } ?>
        </fieldset>

                <input type="submit" value="Search">
                <input type="reset" value="Reset">
                <input type="button" value="Cancel" class="close">

    </form>