### sp_summary Examples Source: https://usepa.github.io/spsurvey/reference/sp_summary.html Illustrative examples of how to use the sp_summary function with different data types and formulas. ```APIDOC ## Examples ```R if (FALSE) { # Summarize distributions of variables in NE_Lakes sp_summary(NE_Lakes, ~ ELEV_CAT * AREA_CAT) # Summarize ELEV for each category of AREA_CAT sp_summary(NE_Lakes, ELEV ~ AREA_CAT) # Summarize design sites sample <- grts(NE_Lakes, 100) sp_summary(sample, ~ ELEV_CAT * AREA_CAT) } ``` ``` -------------------------------- ### Install and Load spsurvey Development Version from GitHub Source: https://usepa.github.io/spsurvey/index.html Installs and loads the most recent development version of the spsurvey package from GitHub. Requires the 'remotes' package to be installed first. ```R # Installing from GitHub requires you first install the remotes package install.packages("remotes") # install the most recent development version from GitHub remotes::install_github("USEPA/spsurvey", ref = "main") # load the most recent development version from GitHub library(spsurvey) ``` -------------------------------- ### Post-stratification popsize example (table) Source: https://usepa.github.io/spsurvey/reference/attrisk_analysis.html Example of specifying population size data for the `postStratify` function using a table. ```R popsize <- with(MySurveyFrame, table(Ecoregion, Type)) ``` -------------------------------- ### Generate and Plot CDF Analysis Source: https://usepa.github.io/spsurvey/reference/cdf_plot.html This example demonstrates how to create a data frame, perform a continuous analysis, and then plot the resulting CDF using the cdf_plot function. It includes setup for variables, subpopulations, and population sizes. ```R if (FALSE) { dframe <- data.frame( siteID = paste0("Site", 1:100), wgt = runif(100, 10, 100), xcoord = runif(100), ycoord = runif(100), stratum = rep(c("Stratum1", "Stratum2"), 50), ContVar = rnorm(100, 10, 1), All_Sites = rep("All Sites", 100), Resource_Class = rep(c("Good", "Poor"), c(55, 45)) ) myvars <- c("ContVar") mysubpops <- c("All_Sites", "Resource_Class") mypopsize <- data.frame( Resource_Class = c("Good", "Poor"), Total = c(4000, 1500) ) myanalysis <- cont_analysis(dframe, vars = myvars, subpops = mysubpops, siteID = "siteID", weight = "wgt", xcoord = "xcoord", ycoord = "ycoord", stratumID = "stratum", popsize = mypopsize ) keep <- with(myanalysis$CDF, Type == "Resource_Class" & Subpopulation == "Good") par(mfrow = c(2, 1)) cdf_plot(myanalysis$CDF[keep, ], xlab = "ContVar", ylab = "Percent of Stream Length", ylab_r = "Stream Length (km)", main = "Estimates for Resource Class: Good" ) cdf_plot(myanalysis$CDF[keep, ], xlab = "ContVar", ylab = "Percent of Stream Length", ylab_r = "Same", main = "Estimates for Resource Class: Good" ) } ``` -------------------------------- ### Calibration popsize example Source: https://usepa.github.io/spsurvey/reference/attrisk_analysis.html Example of specifying population size data for the `calibrate` function using a named list. ```R popsize <- list( Ecoregion = c( East = 750, Central = 500, West = 250 ), Type = c( Streams = 1150, Rivers = 350 ) ) ``` -------------------------------- ### Calculate Spatial Balance Metrics Example Source: https://usepa.github.io/spsurvey/reference/sp_balance.html Demonstrates calculating spatial balance metrics using the sp_balance function. Includes examples for both simple and stratified sampling designs. ```R if (FALSE) { sample <- grts(NE_Lakes, 30) sp_balance(sample$sites_base, NE_Lakes) strata_n <- c(low = 25, high = 30) sample_strat <- grts(NE_Lakes, n_base = strata_n, stratum_var = "ELEV_CAT") sp_balance(sample_strat$sites_base, NE_Lakes, stratum_var = "ELEV_CAT", metric = "rmse") } ``` -------------------------------- ### Install spsurvey Package Source: https://usepa.github.io/spsurvey/articles/start-here.html Run this command once to install the spsurvey package from CRAN. Ensure you have a stable internet connection. ```r install.packages("spsurvey") ``` -------------------------------- ### Startup Option: Partial_Begin Source: https://usepa.github.io/spsurvey/reference/revisit_dsgn.html Initiates a revisit design at the last time period scheduled for sampling in the first panel. For a [2-3-1-4] design, this starts at time period 6 instead of time period 1. ```R "Partial_Begin" ``` -------------------------------- ### IRS Sample Selection Examples Source: https://usepa.github.io/spsurvey/reference/irs.html Demonstrates basic IRS sampling, stratified sampling with specified strata sizes, and sampling with additional oversample sites. These examples are within an if(FALSE) block, indicating they are for illustrative purposes and not intended for direct execution without modification. ```R if (FALSE) { samp <- irs(NE_Lakes, n_base = 100) print(samp) strata_n <- c(low = 25, high = 30) samp_strat <- irs(NE_Lakes, n_base = strata_n, stratum_var = "ELEV_CAT") print(samp_strat) samp_over <- irs(NE_Lakes, n_base = 30, n_over = 5) print(samp_over) } ``` -------------------------------- ### Revisit Randomization with Panel Control Source: https://usepa.github.io/spsurvey/reference/revisit_rand.html This example demonstrates the revisit_rand function with rand_control set to 'panel'. This suggests randomization is controlled at the panel level. ```R revisit_rand( n_period = 20, n_pnl = 10, rand_control = "panel", n_visit = 5, nsamp = 10 ) #> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #> Random_01 10 0 10 0 0 0 10 0 10 0 0 10 0 0 0 0 0 0 0 0 #> Random_02 0 0 0 0 0 0 0 10 0 10 0 0 10 10 10 0 0 0 0 0 #> Random_03 0 10 10 0 0 10 0 0 0 0 0 0 0 0 10 0 0 0 0 10 #> Random_04 0 10 0 0 0 10 0 10 10 0 0 10 0 0 0 0 0 0 0 0 #> Random_05 10 10 0 0 0 0 0 0 0 0 0 0 10 10 0 0 0 0 0 10 #> Random_06 0 10 0 10 0 0 0 10 0 0 10 10 0 0 0 0 0 0 0 0 #> Random_07 0 0 10 10 0 10 0 0 0 0 10 10 0 0 0 0 0 0 0 0 #> Random_08 0 0 0 0 10 10 10 10 0 0 0 0 0 0 0 0 0 0 10 0 #> Random_09 0 10 0 0 10 0 10 0 10 0 0 0 0 10 0 0 0 0 0 0 #> Random_10 0 0 0 0 0 0 0 10 0 10 0 0 0 10 0 0 0 0 10 10 #> attr(,"class") #> [1] "paneldesign" ``` -------------------------------- ### ASH Density Estimation Example Source: https://usepa.github.io/spsurvey/reference/ash1_wgt.html Demonstrates how to use the `ash1_wgt` function to estimate a density from weighted data and then plot the results. Ensure `x` and `wgt` are properly defined before calling the function. ```R x <- rnorm(100, 10, sqrt(10)) wgt <- runif(100, 10, 100) rslt <- ash1_wgt(x, wgt) plot(rslt) ``` -------------------------------- ### Install and Load spsurvey from CRAN Source: https://usepa.github.io/spsurvey/index.html Installs and loads the most recent approved version of the spsurvey package from CRAN. ```R install.packages("spsurvey") library(spsurvey) ``` -------------------------------- ### Post-stratification popsize example (data frame) Source: https://usepa.github.io/spsurvey/reference/attrisk_analysis.html Example of specifying population size data for the `postStratify` function using a data frame. ```R popsize <- data.frame( Ecoregion = rep(c("East", "Central", "West"), rep(2, 3)), Type = rep(c("Streams", "Rivers"), 3), Total = c(575, 175, 400, 100, 175, 75) ) ``` -------------------------------- ### Install spsurvey Development Version with Vignettes from GitHub Source: https://usepa.github.io/spsurvey/index.html Installs the most recent development version of the spsurvey package from GitHub, including package vignettes. This requires the 'devtools' package. ```R install the most recent development version from GitHub with package vignettes devtools::install_github("USEPA/spsurvey", build_vignettes=TRUE) ``` -------------------------------- ### Startup Option: Partial_End (Serially Alternating) Source: https://usepa.github.io/spsurvey/reference/revisit_dsgn.html For serially alternating panels, initiates the revisit design at the time period that begins the second serially alternating pattern. For a [2-3-1-4] design, this starts at time period 11 instead of time period 1. ```R "Partial_End" ``` -------------------------------- ### Construct and Plot Power Curves Source: https://usepa.github.io/spsurvey/reference/ppd_plot.html Demonstrates constructing rotating and fixed panel designs, calculating power for these designs, and then plotting the power curves. Includes examples of plotting all designs, specific designs, and designs with specific trend values. ```R if (FALSE) { # Construct a rotating panel design with sample size of 60 R60N <- revisit_dsgn(20, panels = list(R60N = list( n = 60, pnl_dsgn = c(1, NA), pnl_n = NA, start_option = "None" )), begin = 1) # Construct a fixed panel design with sample size of 60 F60 <- revisit_dsgn(20, panels = list(F60 = list( n = 60, pnl_dsgn = c(1, 0), pnl_n = NA, start_option = "None" )), begin = 1) # Power for rotating panel with sample size 60 Power_tst <- power_dsgn("Variable_Name", ind_values = 43, unit_var = 280, period_var = 4, unitperiod_var = 40, index_var = 90, unit_rho = 1, period_rho = 0, paneldsgn = list( R60N = R60N, F60 = F60 ), nrepeats = NULL, trend_type = "mean", trend = c(1.0, 2.0), alpha = 0.05 ) ppd_plot(Power_tst) ppd_plot(Power_tst, dsgns = c("F60", "R60N")) ppd_plot(Power_tst, dsgns = c("F60", "R60N"), trend = 1.0) ppd_plot(Power_tst, plot_type = "relative", comp_type = "design", trend_type = "mean", trend = c(1, 2), dsgns = c("R60N", "F60"), indicator = "Variable_Name" ) } ``` -------------------------------- ### Calculate Revisit Design Summary Source: https://usepa.github.io/spsurvey/reference/pd_summary.html This example demonstrates how to create a serially alternating panel revisit design using `revisit_dsgn` and then summarize it with `pd_summary`. The output includes various metrics about the design's structure and sampling effort. ```R # Serially alternating panel revisit design summary sa_dsgn <- revisit_dsgn(20, panels = list(SA60N = list( n = 60, pnl_dsgn = c(1, 4), pnl_n = NA, start_option = "None" )), begin = 1) pd_summary(sa_dsgn) #> $n_panel #> [1] 5 #> #> $n_period #> [1] 20 #> #> $n_total #> [1] 1200 #> #> $n_periodunit #> SA60N_1 SA60N_2 SA60N_3 SA60N_4 SA60N_5 #> 4 4 4 4 4 #> #> $n_unitpnl #> SA60N_1 SA60N_2 SA60N_3 SA60N_4 SA60N_5 #> 240 240 240 240 240 #> #> $n_unitperiod #> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #> 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 #> #> $ncum_unit #> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #> 60 120 180 240 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 #> ``` -------------------------------- ### Population Size (popsize) for Post-Stratification (Table) Source: https://usepa.github.io/spsurvey/reference/cat_analysis.html Example of defining the popsize argument as a table for the `postStratify` function. The table must have named dimnames corresponding to factor variables. ```R popsize <- with(MySurveyFrame, table(Ecoregion, Type)) ``` -------------------------------- ### Prepare Data for Change Analysis Source: https://usepa.github.io/spsurvey/reference/change_analysis.html Create a sample data frame with survey data, including site information, weights, coordinates, strata, and categorical variables. This setup is necessary before performing change analysis. ```R dframe <- data.frame( surveyID = rep(c("Survey 1", "Survey 2"), c(100, 100)), siteID = paste0("Site", 1:200), wgt = runif(200, 10, 100), xcoord = runif(200), ycoord = runif(200), stratum = rep(rep(c("Stratum 1", "Stratum 2"), c(2, 2)), 50), CatVar = rep(c("North", "South"), 100), All_Sites = rep("All Sites", 200), Resource_Class = sample(c("Good", "Fair", "Poor"), 200, replace = TRUE) ) ``` -------------------------------- ### Revisit Randomization with Period Control Source: https://usepa.github.io/spsurvey/reference/revisit_rand.html This example shows the revisit_rand function with rand_control set to 'period'. This indicates that randomization is managed at the period level. ```R revisit_rand( n_period = 20, n_pnl = 10, rand_control = "period", n_visit = 5, nsamp = 10 ) #> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #> Random_01 0 10 0 10 0 0 10 10 10 0 0 10 10 10 10 10 10 10 0 10 #> Random_02 0 10 0 0 0 10 0 0 0 10 10 0 10 10 10 0 0 0 10 0 #> Random_03 10 10 0 0 0 10 10 10 0 0 10 10 10 0 0 10 0 10 0 10 #> Random_04 10 0 10 10 10 10 10 0 10 10 0 10 0 10 0 0 10 0 10 10 #> Random_05 10 0 0 10 10 10 10 10 0 0 0 0 10 0 10 10 0 0 0 10 #> Random_06 10 0 10 10 10 0 10 10 10 0 10 0 0 0 10 0 10 10 0 0 #> Random_07 0 0 0 0 10 0 0 0 0 10 10 0 0 10 0 0 0 10 10 0 #> Random_08 0 0 10 0 10 10 0 0 0 10 0 0 0 0 0 10 10 0 10 10 #> Random_09 10 10 10 10 0 0 0 10 10 0 0 10 10 0 0 0 0 0 10 0 #> Random_10 0 10 10 0 0 0 0 0 10 10 10 10 0 10 10 10 10 10 0 0 #> attr(,"class") #> [1] "paneldesign" ``` -------------------------------- ### Create rotating panels with units sampled once Source: https://usepa.github.io/spsurvey/reference/revisit_dsgn.html This example demonstrates creating rotating panels where each sample unit is visited only once. The `pnl_dsgn = c(1, NA)` indicates sampling once and then skipping. The number of panels equals the number of time periods. ```R # Rotating panels of 60 units sampled once and never again: [1-n]. Number # of panels equal n_period. revisit_dsgn(20, panels = list( R60N = list(n = 60, pnl_dsgn = c(1, NA), pnl_n = NA, start_option = "None") ), begin = 1 ) #> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #> R60N_01 60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #> R60N_02 0 60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #> R60N_03 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #> R60N_04 0 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #> R60N_05 0 0 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #> R60N_06 0 0 0 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #> R60N_07 0 0 0 0 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0 0 #> R60N_08 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0 #> R60N_09 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 0 0 0 0 #> R60N_10 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 0 0 0 #> R60N_11 0 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 0 0 #> R60N_12 0 0 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 0 #> R60N_13 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 #> R60N_14 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 #> R60N_15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 #> R60N_16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 0 0 #> R60N_17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 0 #> R60N_18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 #> R60N_19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 #> R60N_20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 #> attr(,"class") #> [1] "paneldesign" ``` -------------------------------- ### Example of revisit_bibd usage Source: https://usepa.github.io/spsurvey/reference/revisit_bibd.html Creates a balanced incomplete block design with specific parameters for sample occasions, panels, visits, and units per panel. The output is a matrix representing the sampling plan. ```R # Balanced incomplete block design with 20 sample occasions, 20 panels, # 3 visits to each unit, and 20 units in each panel. revisit_bibd(n_period = 20, n_pnl = 20, n_visit = 3, nsamp = 20) #> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #> BIB_01 0 0 0 0 0 20 0 0 20 0 0 20 0 0 0 0 0 0 0 0 #> BIB_02 20 0 0 0 0 0 20 20 0 0 0 0 0 0 0 0 0 0 0 0 #> BIB_03 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 20 0 0 0 20 #> BIB_04 0 0 0 0 0 0 0 20 0 0 0 0 20 0 0 20 0 0 0 0 #> BIB_05 0 0 20 0 0 0 20 0 20 0 0 0 0 0 0 0 0 0 0 0 #> BIB_06 0 0 0 20 0 20 0 0 0 0 0 0 0 0 0 0 0 20 0 0 #> BIB_07 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 20 0 0 20 #> BIB_08 0 0 0 0 0 0 0 0 0 0 20 0 20 0 0 0 20 0 0 0 #> BIB_09 0 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 #> BIB_10 0 0 0 0 0 0 0 0 0 0 20 0 0 20 20 0 0 0 0 0 #> BIB_11 20 0 0 20 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 #> BIB_12 20 0 0 0 0 0 0 0 0 20 0 20 0 0 0 0 0 0 0 0 #> BIB_13 0 20 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 20 0 0 #> BIB_14 0 0 0 0 20 0 20 0 0 0 0 0 0 0 0 0 20 0 0 0 #> BIB_15 0 0 0 0 20 0 0 0 0 20 0 0 0 0 0 0 0 0 20 0 #> BIB_16 0 0 20 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 20 #> BIB_17 0 0 0 0 0 0 0 0 20 0 0 0 0 20 0 20 0 0 0 0 #> BIB_18 0 20 0 0 0 0 0 0 0 0 20 20 0 0 0 0 0 0 0 0 #> BIB_19 0 0 0 0 20 0 0 0 0 0 0 0 0 20 0 0 0 20 0 0 #> BIB_20 0 0 0 20 0 0 0 0 0 0 0 0 20 0 0 0 0 0 20 0 #> attr(,"class") #> [1] "paneldesign" ``` -------------------------------- ### Population Size (popsize) for Calibration Source: https://usepa.github.io/spsurvey/reference/cat_analysis.html Example of defining the popsize argument as a named list for the `calibrate` function. This specifies population totals for factor variables used in calibration. ```R popsize <- list( Ecoregion = c( East = 750, Central = 500, West = 250), Type = c( Streams = 1150, Rivers = 350)) ``` -------------------------------- ### Revisit Randomization with No Control Source: https://usepa.github.io/spsurvey/reference/revisit_rand.html This example shows the revisit_rand function used with rand_control set to 'none'. This likely means no specific randomization strategy is applied beyond basic panel design. ```R revisit_rand( n_period = 20, n_pnl = 10, rand_control = "none", n_visit = 50, nsamp = 20 ) #> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #> Random_01 0 0 0 20 20 0 0 0 0 0 0 0 0 20 0 20 0 20 0 0 #> Random_02 0 0 0 0 0 20 0 0 0 0 0 20 0 0 0 0 20 0 0 0 #> Random_03 0 20 0 20 20 0 0 0 0 20 20 0 0 0 0 20 20 0 0 0 #> Random_04 0 20 0 0 20 0 0 0 20 0 20 0 0 0 0 0 0 20 0 0 #> Random_05 20 20 0 0 0 20 0 0 0 20 0 20 0 0 0 20 20 20 0 0 #> Random_06 0 0 20 0 0 0 0 20 0 0 0 0 0 20 0 0 0 20 0 0 #> Random_07 20 0 20 0 0 0 0 0 0 0 0 20 0 0 0 0 0 20 0 0 #> Random_08 20 0 0 20 0 20 0 0 0 0 0 0 0 0 0 20 0 20 0 20 #> Random_09 0 0 0 20 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 #> Random_10 0 0 20 0 0 0 0 0 0 20 0 20 0 20 0 20 0 20 0 0 #> attr(,"class") #> [1] "paneldesign" ``` -------------------------------- ### Plotting CDF Estimates for a Subpopulation Source: https://usepa.github.io/spsurvey/reference/plot.sp_CDF.html This example demonstrates how to create a data frame, perform a continuous analysis, and then plot the CDF estimates for a specific subpopulation. It shows how to filter the CDF results and customize plot labels and titles. ```R if (FALSE) { dframe <- data.frame( siteID = paste0("Site", 1:100), wgt = runif(100, 10, 100), xcoord = runif(100), ycoord = runif(100), stratum = rep(c("Stratum1", "Stratum2"), 50), ContVar = rnorm(100, 10, 1), All_Sites = rep("All Sites", 100), Resource_Class = rep(c("Good", "Poor"), c(55, 45)) ) myvars <- c("ContVar") mysubpops <- c("All_Sites", "Resource_Class") popsize <- data.frame( Resource_Class = c("Good", "Poor"), Total = c(4000, 1500) ) myanalysis <- cont_analysis(dframe, vars = myvars, subpops = mysubpops, siteID = "siteID", weight = "wgt", xcoord = "xcoord", ycoord = "ycoord", stratumID = "stratum", popsize = mypopsize ) keep <- with(myanalysis$CDF, Type == "Resource_Class" & Subpopulation == "Good") par(mfrow = c(2, 1)) plot(myanalysis$CDF[keep, ], xlab = "ContVar", ylab = "Percent of Stream Length", ylab_r = "Stream Length (km)", main = "Estimates for Resource Class: Good" ) plot(myanalysis$CDF[keep, ], xlab = "ContVar", ylab = "Percent of Stream Length", ylab_r = "Same", main = "Estimates for Resource Class: Good" ) } ``` -------------------------------- ### Summarizing Design Sites Source: https://usepa.github.io/spsurvey/articles/EDA.html Use the summary() function with the default formula (~siteuse) to get a summary of the design sites, including total counts and counts by site use type (e.g., Base, Over). ```R summary(eqprob_rho) ``` -------------------------------- ### Interactive Program Startup Notice (GNU GPL) Source: https://usepa.github.io/spsurvey/LICENSE.html This notice should be displayed by interactive programs upon startup to inform users about the program's copyright, lack of warranty, and free software status under the GNU GPL. Commands like 'show w' and 'show c' should provide details on warranty and conditions. ```text Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free software, and you are welcome to redistribute it under certain conditions; type 'show c' for details. ```