##packages

library(readr)
library(dplyr)
library(tidyr)
library(Hmisc)
library(forecast)

Executive Summary

Data

# Dataset 1

Data1<-read_csv("C:/Users/Pooja/Downloads/DS.csv")
Missing column names filled in: 'X1' [1]Parsed with column specification:
cols(
  X1 = col_double(),
  title = col_character(),
  company = col_character(),
  cpage = col_character(),
  ratings = col_double(),
  location = col_character(),
  days_ago = col_double(),
  summary = col_character()
)
head(Data1)

# Dataset 2

Data2<-read_csv("C:/Users/Pooja/Downloads/listings.csv")
Parsed with column specification:
cols(
  .default = col_double(),
  jobTitle = col_character(),
  jobClassification = col_character(),
  jobSubClassification = col_character(),
  advertiserName = col_character(),
  companyName = col_character(),
  listingDate = col_datetime(format = ""),
  expiryDate = col_datetime(format = ""),
  teaser = col_character(),
  nation = col_character(),
  state = col_character(),
  city = col_character(),
  area = col_character(),
  suburb = col_character(),
  workType = col_character(),
  salary_string = col_character(),
  isRightToWorkRequired = col_logical(),
  desktopAdTemplate = col_character(),
  mobileAdTemplate = col_character(),
  companyProfileUrl = col_character(),
  seekJobListingUrl = col_character()
  # ... with 2 more columns
)
See spec(...) for full column specifications.
head(Data2)

# merged dataset
Data3<-left_join(Data2,Data1,c("jobTitle"="title"))
head(Data3)
NA

Understand


summary(Data3)
     jobId            jobTitle         jobClassification  jobSubClassification
 Min.   :38098375   Length:29751       Length:29751       Length:29751        
 1st Qu.:38965720   Class :character   Class :character   Class :character    
 Median :39597982   Mode  :character   Mode  :character   Mode  :character    
 Mean   :39617436                                                             
 3rd Qu.:40270299                                                             
 Max.   :41037334                                                             
                                                                              
 advertiserName      advertiserId        companyId      companyName        companyRating  
 Length:29751       Min.   :    1742   Min.   :432299   Length:29751       Min.   :2.600  
 Class :character   1st Qu.:22062501   1st Qu.:432419   Class :character   1st Qu.:3.200  
 Mode  :character   Median :26734030   Median :432709   Mode  :character   Median :3.400  
                    Mean   :26346559   Mean   :509449                      Mean   :3.483  
                    3rd Qu.:32860434   3rd Qu.:434719                      3rd Qu.:3.700  
                    Max.   :44645027   Max.   :834866                      Max.   :4.800  
                                       NA's   :26395                       NA's   :26395  
  listingDate                    expiryDate                     teaser         
 Min.   :2019-01-16 12:17:41   Min.   :2019-03-06 23:59:59   Length:29751      
 1st Qu.:2019-05-07 17:16:09   1st Qu.:2019-06-06 23:59:59   Class :character  
 Median :2019-07-31 16:38:17   Median :2019-08-30 23:59:59   Mode  :character  
 Mean   :2019-08-04 20:04:29   Mean   :2019-09-04 02:22:18                     
 3rd Qu.:2019-10-29 16:00:25   3rd Qu.:2019-11-28 23:59:59                     
 Max.   :2020-02-25 15:55:48   Max.   :2020-03-27 00:00:00                     
                                                                               
    nation             state               city               area              suburb         
 Length:29751       Length:29751       Length:29751       Length:29751       Length:29751      
 Class :character   Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character   Mode  :character  
                                                                                               
                                                                                               
                                                                                               
                                                                                               
   workType         salary_string      isRightToWorkRequired desktopAdTemplate 
 Length:29751       Length:29751       Mode :logical         Length:29751      
 Class :character   Class :character   FALSE:19579           Class :character  
 Mode  :character   Mode  :character   TRUE :10172           Mode  :character  
                                                                               
                                                                               
                                                                               
                                                                               
 mobileAdTemplate   companyProfileUrl  seekJobListingUrl        R              Python      
 Length:29751       Length:29751       Length:29751       Min.   :0.0000   Min.   :0.0000  
 Class :character   Class :character   Class :character   1st Qu.:1.0000   1st Qu.:1.0000  
 Mode  :character   Mode  :character   Mode  :character   Median :1.0000   Median :1.0000  
                                                          Mean   :0.7955   Mean   :0.8671  
                                                          3rd Qu.:1.0000   3rd Qu.:1.0000  
                                                          Max.   :1.0000   Max.   :1.0000  
                                                                                           
     Matlab            SQL             Stata            Minitab              SPSS        
 Min.   :0.0000   Min.   :0.0000   Min.   :0.00000   Min.   :0.00e+00   Min.   :0.00000  
 1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.00000   1st Qu.:0.00e+00   1st Qu.:0.00000  
 Median :0.0000   Median :1.0000   Median :0.00000   Median :0.00e+00   Median :0.00000  
 Mean   :0.0882   Mean   :0.6727   Mean   :0.01079   Mean   :3.36e-05   Mean   :0.03244  
 3rd Qu.:0.0000   3rd Qu.:1.0000   3rd Qu.:0.00000   3rd Qu.:0.00e+00   3rd Qu.:0.00000  
 Max.   :1.0000   Max.   :1.0000   Max.   :1.00000   Max.   :1.00e+00   Max.   :1.00000  
                                                                                         
      Ruby                C               Scala           Tableau           Java       
 Min.   :0.000000   Min.   :0.00000   Min.   :0.0000   Min.   :0.000   Min.   :0.0000  
 1st Qu.:0.000000   1st Qu.:0.00000   1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:0.0000  
 Median :0.000000   Median :0.00000   Median :0.0000   Median :0.000   Median :0.0000  
 Mean   :0.002286   Mean   :0.09536   Mean   :0.2488   Mean   :0.221   Mean   :0.1328  
 3rd Qu.:0.000000   3rd Qu.:0.00000   3rd Qu.:0.0000   3rd Qu.:0.000   3rd Qu.:0.0000  
 Max.   :1.000000   Max.   :1.00000   Max.   :1.0000   Max.   :1.000   Max.   :1.0000  
                                                                                       
     Hadoop            SAS            Julia             Knime                D3          
 Min.   :0.0000   Min.   :0.000   Min.   :0.00000   Min.   :0.000000   Min.   :0.000000  
 1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:0.00000   1st Qu.:0.000000   1st Qu.:0.000000  
 Median :0.0000   Median :0.000   Median :0.00000   Median :0.000000   Median :0.000000  
 Mean   :0.2565   Mean   :0.201   Mean   :0.02555   Mean   :0.002084   Mean   :0.005613  
 3rd Qu.:1.0000   3rd Qu.:0.000   3rd Qu.:0.00000   3rd Qu.:0.000000   3rd Qu.:0.000000  
 Max.   :1.0000   Max.   :1.000   Max.   :1.00000   Max.   :1.000000   Max.   :1.000000  
                                                                                         
    Clojure            Haskell              Lisp       Golang             Spark       
 Min.   :0.00e+00   Min.   :0.000000   Min.   :0   Min.   :0.000000   Min.   :0.0000  
 1st Qu.:0.00e+00   1st Qu.:0.000000   1st Qu.:0   1st Qu.:0.000000   1st Qu.:0.0000  
 Median :0.00e+00   Median :0.000000   Median :0   Median :0.000000   Median :0.0000  
 Mean   :3.36e-05   Mean   :0.001647   Mean   :0   Mean   :0.001546   Mean   :0.1349  
 3rd Qu.:0.00e+00   3rd Qu.:0.000000   3rd Qu.:0   3rd Qu.:0.000000   3rd Qu.:0.0000  
 Max.   :1.00e+00   Max.   :1.000000   Max.   :0   Max.   :1.000000   Max.   :1.0000  
                                                                                      
   Javascript             F#              Fortran           first_seen        
 Min.   :0.000000   Min.   :0.000000   Min.   :0.000000   Min.   :2019-03-06  
 1st Qu.:0.000000   1st Qu.:0.000000   1st Qu.:0.000000   1st Qu.:2019-05-07  
 Median :0.000000   Median :0.000000   Median :0.000000   Median :2019-07-31  
 Mean   :0.005412   Mean   :0.001513   Mean   :0.003092   Mean   :2019-08-05  
 3rd Qu.:0.000000   3rd Qu.:0.000000   3rd Qu.:0.000000   3rd Qu.:2019-10-29  
 Max.   :1.000000   Max.   :1.000000   Max.   :1.000000   Max.   :2020-02-25  
                                                                              
   last_seen            recruiter            X1          company             cpage          
 Min.   :2019-03-06   Min.   :0.0000   Min.   :  1.0   Length:29751       Length:29751      
 1st Qu.:2019-06-01   1st Qu.:0.0000   1st Qu.: 18.0   Class :character   Class :character  
 Median :2019-08-21   Median :1.0000   Median : 76.0   Mode  :character   Mode  :character  
 Mean   :2019-08-27   Mean   :0.5409   Mean   :145.1                                        
 3rd Qu.:2019-11-21   3rd Qu.:1.0000   3rd Qu.:352.0                                        
 Max.   :2020-02-26   Max.   :1.0000   Max.   :510.0                                        
                                       NA's   :599                                          
    ratings         location            days_ago       summary         
 Min.   :0.0000   Length:29751       Min.   : 1.00   Length:29751      
 1st Qu.:0.0000   Class :character   1st Qu.: 6.00   Class :character  
 Median :0.0000   Mode  :character   Median :14.00   Mode  :character  
 Mean   :0.7778                      Mean   :14.63                     
 3rd Qu.:0.0000                      3rd Qu.:23.00                     
 Max.   :4.1000                      Max.   :30.00                     
 NA's   :599                         NA's   :599                       
class(Data3$listingDate)
[1] "POSIXct" "POSIXt" 
Data3$listingDate<-as.Date(Data3$listingDate)

class(Data3$expiryDate)
[1] "POSIXct" "POSIXt" 
Data3$expiryDate<-as.Date(Data3$expiryDate)

class(Data3$last_seen)
[1] "Date"
class(Data3$jobId)
[1] "numeric"
Data3$jobId<-as.character(Data3$jobId)


Data3$workType<-factor(Data3$workType,labels = c("Casual/Vacation","Contract/Temp",   "Full Time" ,      "Part Time"))
class(Data3$workType)
[1] "factor"
levels(Data3$workType)
[1] "Casual/Vacation" "Contract/Temp"   "Full Time"       "Part Time"      

Tidy & Manipulate Data I


Data1<-Data1%>%separate(location, into = c("City", "State"),sep =" ")
Expected 2 pieces. Additional pieces discarded in 47 rows [9, 10, 52, 54, 61, 76, 83, 104, 108, 131, 133, 135, 139, 145, 156, 158, 174, 176, 180, 188, ...].Expected 2 pieces. Missing pieces filled with `NA` in 34 rows [7, 13, 16, 21, 28, 29, 34, 39, 44, 45, 53, 79, 143, 152, 175, 178, 183, 206, 213, 244, ...].
head(Data1$City)
[1] "Sydney"    "Canberra"  "Sydney"    "Melbourne" "Taringa"   "Sydney"   
head(Data1$State)
[1] "NSW" "ACT" "NSW" "VIC" "QLD" "NSW"

Tidy & Manipulate Data II


class(Data3$listingDate)
[1] "Date"
class(Data3$expiryDate)
[1] "Date"
Data3$listingDate<-as.Date(Data3$listingDate,format="%yyyy/%mm/%dd")

Data3$expiryDate<-as.Date(Data3$expiryDate,format="%yyyy/%mm/%dd")

Data3<-mutate(Data3,Duration=(expiryDate-listingDate))

Data3$Duration
Time differences in days
   [1] 58 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
  [31] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
  [61] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
  [91] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [121] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [151] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [181] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [211] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [241] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [271] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [301] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [331] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [361] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [391] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 41 30 30 30 30 30 30 30 30 30 30 30
 [421] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [451] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [481] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [511] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [541] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [571] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [601] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [631] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [661] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [691] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [721] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [751] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [781] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [811] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [841] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [871] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [901] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [931] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [961] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 [991] 30 30 30 30 30 30 30 30 30 30
 [ reached getOption("max.print") -- omitted 28751 entries ]

Scan I


sum(is.na(Data3))
[1] 145422
colSums(is.na(Data3))
                jobId              jobTitle     jobClassification  jobSubClassification 
                    0                     0                     0                     0 
       advertiserName          advertiserId             companyId           companyName 
                    0                     0                 26395                 21589 
        companyRating           listingDate            expiryDate                teaser 
                26395                     0                     0                     0 
               nation                 state                  city                  area 
                    0                     0                     0                 11302 
               suburb              workType         salary_string isRightToWorkRequired 
                 8820                     0                 19617                     0 
    desktopAdTemplate      mobileAdTemplate     companyProfileUrl     seekJobListingUrl 
                 5522                     0                 21589                     0 
                    R                Python                Matlab                   SQL 
                    0                     0                     0                     0 
                Stata               Minitab                  SPSS                  Ruby 
                    0                     0                     0                     0 
                    C                 Scala               Tableau                  Java 
                    0                     0                     0                     0 
               Hadoop                   SAS                 Julia                 Knime 
                    0                     0                     0                     0 
                   D3               Clojure               Haskell                  Lisp 
                    0                     0                     0                     0 
               Golang                 Spark            Javascript                    F# 
                    0                     0                     0                     0 
              Fortran            first_seen             last_seen             recruiter 
                    0                     0                     0                     0 
                   X1               company                 cpage               ratings 
                  599                   599                   599                   599 
             location              days_ago               summary              Duration 
                  599                   599                   599                     0 
Data3$days_ago<- impute(Data3$days_ago, fun = mean) 

Data3$ratings<-impute(Data3$ratings,fun=mean)

Data3<-select(Data3,-companyName:-companyRating)

Data3<-select(Data3,-companyProfileUrl)

Data3<-select(Data3,-cpage,-company,-location,-summary)

Data3$area<-impute(Data3$area,fun=mode)

Data3$suburb<-impute(Data3$suburb,fun=mode)

Data3$salary_string<-impute(Data3$salary_string,fun = mode)

Data3$desktopAdTemplate<-impute(Data3$desktopAdTemplate,fun=mode)

head(Data3)

sapply(Data3,is.infinite)
         jobId jobTitle jobClassification jobSubClassification advertiserName advertiserId
    [1,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
    [2,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
    [3,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
    [4,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
    [5,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
    [6,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
    [7,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
    [8,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
    [9,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [10,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [11,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [12,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [13,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [14,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [15,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [16,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [17,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
   [18,] FALSE    FALSE             FALSE                FALSE          FALSE        FALSE
         companyId listingDate expiryDate teaser nation state  city  area suburb workType
    [1,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
    [2,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
    [3,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
    [4,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
    [5,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
    [6,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
    [7,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
    [8,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
    [9,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [10,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [11,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [12,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [13,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [14,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [15,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [16,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [17,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
   [18,]     FALSE       FALSE      FALSE  FALSE  FALSE FALSE FALSE FALSE  FALSE    FALSE
         salary_string isRightToWorkRequired desktopAdTemplate mobileAdTemplate
    [1,]         FALSE                 FALSE             FALSE            FALSE
    [2,]         FALSE                 FALSE             FALSE            FALSE
    [3,]         FALSE                 FALSE             FALSE            FALSE
    [4,]         FALSE                 FALSE             FALSE            FALSE
    [5,]         FALSE                 FALSE             FALSE            FALSE
    [6,]         FALSE                 FALSE             FALSE            FALSE
    [7,]         FALSE                 FALSE             FALSE            FALSE
    [8,]         FALSE                 FALSE             FALSE            FALSE
    [9,]         FALSE                 FALSE             FALSE            FALSE
   [10,]         FALSE                 FALSE             FALSE            FALSE
   [11,]         FALSE                 FALSE             FALSE            FALSE
   [12,]         FALSE                 FALSE             FALSE            FALSE
   [13,]         FALSE                 FALSE             FALSE            FALSE
   [14,]         FALSE                 FALSE             FALSE            FALSE
   [15,]         FALSE                 FALSE             FALSE            FALSE
   [16,]         FALSE                 FALSE             FALSE            FALSE
   [17,]         FALSE                 FALSE             FALSE            FALSE
   [18,]         FALSE                 FALSE             FALSE            FALSE
         seekJobListingUrl     R Python Matlab   SQL Stata Minitab  SPSS  Ruby     C Scala
    [1,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
    [2,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
    [3,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
    [4,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
    [5,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
    [6,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
    [7,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
    [8,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
    [9,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [10,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [11,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [12,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [13,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [14,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [15,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [16,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [17,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
   [18,]             FALSE FALSE  FALSE  FALSE FALSE FALSE   FALSE FALSE FALSE FALSE FALSE
         Tableau  Java Hadoop   SAS Julia Knime    D3 Clojure Haskell  Lisp Golang Spark
    [1,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
    [2,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
    [3,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
    [4,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
    [5,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
    [6,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
    [7,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
    [8,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
    [9,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [10,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [11,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [12,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [13,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [14,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [15,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [16,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [17,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
   [18,]   FALSE FALSE  FALSE FALSE FALSE FALSE FALSE   FALSE   FALSE FALSE  FALSE FALSE
         Javascript    F# Fortran first_seen last_seen recruiter    X1 ratings days_ago
    [1,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
    [2,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
    [3,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
    [4,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
    [5,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
    [6,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
    [7,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
    [8,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
    [9,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [10,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [11,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [12,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [13,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [14,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [15,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [16,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [17,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
   [18,]      FALSE FALSE   FALSE      FALSE     FALSE     FALSE FALSE   FALSE    FALSE
         Duration
    [1,]    FALSE
    [2,]    FALSE
    [3,]    FALSE
    [4,]    FALSE
    [5,]    FALSE
    [6,]    FALSE
    [7,]    FALSE
    [8,]    FALSE
    [9,]    FALSE
   [10,]    FALSE
   [11,]    FALSE
   [12,]    FALSE
   [13,]    FALSE
   [14,]    FALSE
   [15,]    FALSE
   [16,]    FALSE
   [17,]    FALSE
   [18,]    FALSE
 [ reached getOption("max.print") -- omitted 29733 rows ]

Scan II



class(Data3$Duration)
[1] "difftime"
Data3$Duration<-as.numeric(Data3$Duration)
Data3$ratings<-as.numeric(Data3$ratings)
Data3$days_ago<-as.numeric(Data3$days_ago)
boxplot(Data3$Duration)


boxplot(Data3$ratings)


boxplot(Data3$days_ago)

Transform


hist(Data3$ratings)


sq_ratings<-sqrt(Data3$ratings)
hist(sq_ratings)

recep<-1/Data3$ratings
hist(recep)

Data3$ratings<-as.numeric(Data3$ratings)
hist(Data3$ratings)

Data3$days_ago<-as.numeric(Data3$days_ago)
hist(Data3$Duration)

hist(Data3$days_ago)


box_rat<-BoxCox(Data3$ratings,lambda = "auto")
hist(box_rat)

NA
NA

References:

LS0tDQp0aXRsZTogIk1BVEgyMzQ5IFNlbWVzdGVyIDEsIDIwMjAiDQphdXRob3I6ICJQb29qYSBNYWxsaW5hdGggKHMzODIwNzM1KSINCnN1YnRpdGxlOiBBc3NpZ25tZW50IDINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KLS0tDQoNCiMjcGFja2FnZXMgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KEhtaXNjKQ0KbGlicmFyeShmb3JlY2FzdCkNCg0KYGBgDQoNCg0KIyMgRXhlY3V0aXZlIFN1bW1hcnkgDQoNCiogVG8gc3RhcnQgd2l0aCwgVGhlIGRhdGFzZXQgMSBhbmQgMiBhcmUgbWVyZ2VkIHVzaW5nIGxlZnQgam9pbiB0byBtYWtlIGEgbmV3IGRhdGFzZXQgd2hpY2ggaXMgdXNlZCBpbiB0aGlzIHN0dWR5IHRvIHdvcmsgd2l0aC4NCiogVGhlIHZhcmlhYmxlcyBpbiB0aGUgZGF0YXNldCBjb250YWluIGRpZmZlcmVudCBraW5kIG9mIGRhdGF0eXBlcy4NCiogRmV3IHZhcmlhYmxlcyB3aGljaCBuZWVkIGNvcnJlY3Rpb24gYXJlIGNvbnZlcnRlZCB0byBvdGhlciBkYXRhdHlwZXMgc3VjaCBhcyBudW1lcmljcyB0byBjaGFyYWN0ZXJzIGV0Yy4NCiogVGhlbiB3b3JrIHR5cGUgdmFyaWFibGUgaXMgY29udmVydGVkIHRvIGZhY3RvciB2YXJpYWJsZSBhbmQgbGFiZWxsZWQuDQoqIFNpbmNlIHRoZSBkYXRhc2V0IGlzIHVudGlkeSBiZWNhdXNlIG9mIHRoZSBsb2NhdGlvbiB2YXJpYWJsZSB3aGljaCBkb2VzIG5vdCBoYXZlIGEgc2luZ2xlIHZhbHVlLCBoZW5jZSB0byB0aWR5IGl0IHdlIHVzZSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBzcGxpdCBpdCBpbnRvIGNpdHkgYW5kIHN0YXRlIHZhcmlhYmxlcy4NCiogQSBuZXcgdmFyaWFibGUgZHVyYXRpb24gaXMgY3JlYXRlZCB1c2luZyBtdXRhdGUgZnVuY3Rpb24gd2hpY2ggaGFzIGRpZmZlcmVuY2UgaW4gdGhlIHRpbWUgd2hlbiB0aGUgam9iIHdhcyBwb3N0ZWQgdG8gaXRzIGV4cGlyeSBkYXRlLg0KKiBUaGVuIGFsbCB0aGUgdmFyaWFibGVzIGFyZSBzY2FubmVkIHRvIGZpbmQgbWlzc2luZyB2YWx1ZXMsIHNwZWNpYWwgdmFsdWVzIG9yIG9idmlvdXMgZXJyb3JzLg0KKiBXZSBzZWUgdGhhdCB0aGVyZSBhcmUgYSBsb3Qgb2YgbWlzc2luZyB2YWx1ZXMgZm91bmQgd2hpY2ggYXJlIGltcHV0ZWQgdXNpbmcgYXBwcm9wcmlhdGUgbWVhbiBhbmQgbW9kZS4NCiogTm8gc3BlY2lhbCB2YWx1ZXMgYXJlICBmb3VuZCBpbiB0aGlzIGRhdGFzZXQgYWZ0ZXIgdXNpbmcgdGhlIHNhcHBseSBmdW5jdGlvbi4gQWxzbyBubyBlcnJvcnMgYXJlIGZvdW5kIGFzIHRoZSBEYXRhIHNlZW1zIHRvIGJlIGNvbnNpc3RlbnQuDQoqIHdoZW4gdGhlIGRhdGFzZXQgaXMgY2hlY2tlZCBmb3Igb3V0bGllcnMsIHdlIGZpbmQgdGhhdCB0aGVyZSBhcmUgbm8gdW51c3VhbCBvdXRsaWVycyBlbmNvdW50ZXJlZCBhcyB0aGUgdmFsdWVzIGZvciB0aGUgdmFyaWFibGVzIGFyZSBtZWFuaW5nZnVsLg0KKiBUbyBjaGFuZ2UgdGhlIHNjYWxlIGZvciBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgdmFyaWFibGUsIGJveGNveCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIHRoZSByYXRpbmdzIHZhcmlhYmxlLiBUaGVzZSBhcmUgdGhlIGZldyBvZiBwcmUtcHJvY2Vzc2luZyB0ZWNobmlxdWVzIGFwcGxpZWQgdG8gdGhlIGRhdGFzZXQuIA0KDQoNCg0KDQojIyBEYXRhIA0KDQoNCmBgYHtyfQ0KIyBEYXRhc2V0IDENCg0KRGF0YTE8LXJlYWRfY3N2KCJDOi9Vc2Vycy9Qb29qYS9Eb3dubG9hZHMvRFMuY3N2IikNCmhlYWQoRGF0YTEpDQoNCiMgRGF0YXNldCAyDQoNCkRhdGEyPC1yZWFkX2NzdigiQzovVXNlcnMvUG9vamEvRG93bmxvYWRzL2xpc3RpbmdzLmNzdiIpDQpoZWFkKERhdGEyKQ0KDQojIG1lcmdlZCBkYXRhc2V0DQpEYXRhMzwtbGVmdF9qb2luKERhdGEyLERhdGExLGMoImpvYlRpdGxlIj0idGl0bGUiKSkNCmhlYWQoRGF0YTMpDQoNCmBgYA0KDQoNCiogMiBEYXRhc2V0cyBoYXZlIGJlZW4gdGFrZW4gaW4gdGhpcyBzdHVkeS4NCg0KKiBUaGUgZmlyc3QgRGF0YXNldCBpcyBkYXRhIHNjaWVudGlzdCBqb2JzIGluIGF1c3RyYWxpYSBPY3RvYmVyIDI1IDIwMTksIGRhdGEgY29sbGVjdGVkIGZyb20gSW5kZWVkLmNvbS4NCg0KKiBEYXRhIHNjaWVudGlzdCBpcyBvbmUgb2YgdGhlIGhvdHRlc3Qgam9icyBpbiB0aGUgd29ybGQgcmlnaHQgbm93IGFuZCB0aGlzIGRhdGFzZXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgam9iIHNlYXJjaCBhdHRlbXB0cy4NCg0KKiBUaGlzIGlzIGEgd2ViIHNjcmFwZWQgZGF0YSBzZXQgdXNpbmcgQmVhdXRpZnVsU29hcCBhbmQgU2VsZW5pdW0uDQoNCiogVGhpcyBEYXRhc2V0IGNvbnRhaW5zIHRoZSBkZXRhaWxzIG9mIGRhdGEgc2NpZW50aXN0IGpvYnMgaW4gQXVzdHJhbGlhIGZvdW5kIG9uIEluZGVlZCBzY3JhcGVkIG9uIG9jdG9iZXIgMjUgMjAxOS4gVGhpcyBkYXRhc2V0IGNvbnRhaW5zOCBjb2x1bW5zLg0KDQoqIFRoaXMgZGF0YSBoYXMgdGFrZW4gZnJvbSBLYWdnbGUuY29tLg0KDQoqIEl0IGluY2x1ZGVzIGRpZmZlcmVudCB0eXBlcyBvZiB2YXJpYWJsZXMuDQoNCiogVGhlIHZhcmlhYmxlcyBpbmNsdWRlOg0KIyA6IENvdW50IG9mIHRoZSBkYXRhIHNjaWVudGlzdCBqb2JzIGluIHRoZSBkYXRhc2V0DQp0aXRsZTogVGhpcyB0ZWxscyB0aGUgdGl0bGUgb2YgdGhlIGpvYihyb2xlKQ0KY29tcGFueTogQ29tcGFueSBuYW1lDQpjcGFnZTogdXJsIG9mIHRoZSBjb21wYW55IHBhZ2Ugb24gaW5kZWVkDQpyYXRpbmdzOiByYXRpbmcgb2YgdGhlIGNvbXBhbnkgZ2l2ZW4gYnkgdGhlIGVtcGxveWVlcw0KbG9jYXRpb246IGxvY2F0aW9uIG9mIHRoZSBjb21wYW55DQpkYXlzX2Fnbzogbm8gb2YgZGF5cyBpdHMgYmVlbiBzaW5jZSB0aGUgam9iIGhhcyBiZWVuIHBvc3RlZA0Kc3VtbWFyeTogYSBicmllZiBzdW1tYXJ5IG9mIHRoZSByb2xlIHByb3ZpZGVkIGJ5IHRoZSBjb21wYW55Lg0KDQoqIFRoaXMgRGF0YXNldCBjYW4gYmUgZm91bmQgb24gaHR0cHM6Ly93d3cua2FnZ2xlLmNvbS9zYW50b2thbGF5aWwvZGF0YS1zY2llbnRpc3Qtam9icy1pbi1hdXN0cmFsaWEtb2N0b2Jlci0yNS0yMDE5Lg0KDQoqIFRoZSBzZWNvbmQgRGF0YXNldCBpcyBhbHNvIHRha2VuIGZyb20ga2FnZ2xlLmNvbQ0KDQoqIEl0IGlzIElUIGpvYiBsaXN0aW5ncyB3aGljaCBpbmNsdWRlcyBEYXRhIFNjaWVudGlzdCBqb2JzIGV0YyBpbiBBdXN0cmFsaWEgZm9yIHRoZSB5ZWFyIDIwMTktMjAyMC4NCg0KKiBUaGlzIGRhdGFzZXQgaGFzIGJlZW4gc2NyYXBlZCBmcm9tIHNlZWsuY29tLg0KDQoqIFRoaXMgZGF0YXNldCBnaXZlcyBzb21lIG1vcmUgdml0YWwgaW5vZnJtYWl0b24gYWJvdXQgdGhlIGRhdGFzY2llbmNlIGpvYnMgd2hpY2ggY2FuIGJlIGFkZGVkIG9uIHRvIHRoZSBwcmV2aW91cyBkYXRhc2V0IGFzIGl0IHByb3ZpZGVzIGZldyBob3QgdHJlbmRzIHJlZ2FyZGluZyB0aGUgcm9sZS4NCg0KKiBMaWtlIHByb2dyYW1taW5nIGxhbmd1YWdlcyB0byBsZWFybiBmb3IgdGhlIGRhdGFzY2llbmNlIHJvbGUgb3IgdG8gc3BlY2lhbGlzZSBpbiBhbnkgb2YgdGhlbS4NCg0KKiBUaGlzIGRhdGFzZXQgaXMgdGhlIGNvbGxlY3Rpb24gZXZlcnkgc2VhcmNoIHJlc3VsdCBmb3IgZGF0YSBzY2llbnRpc3QgYWxvbmcgd2l0aCBlYWNoIG9mIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZXMgYW5kIGFwcGxpY2F0aW9ucy4NCg0KKiBJdCBjb25zaXN0cyBvZiBvdmVyIDUwIGNvbHVtbnMsIG51bWVyaWMgLHRleHQgYW5kIGdlb2dyYXBoaWMgZGF0YSB0byBleHBsb3JlLg0KDQoqIFRoaXMgZGF0YXNldCBpcyBhIGJlZ2lubmVyIGZyaWVuZGx5IGFuZCBpcyBncmVhdCBmb3IgdmlzdWFsaXphdGlvbi4NCg0KKiBUaGlzIGluY2x1ZGVzIG92ZXIgNTAgdmFyaWFibGVzLCBzb21lIG9mIHdoaWNoIGFyZToNCkpvYklEOiBJRCBnaXZlbiB0byB0aGlzIEpvYg0KSm9idGl0bGU6IFRpdGxlL3JvbGUgb2YgdGhpcyBqb2INCkpvYkNsYXNzaWZpY2F0aW9uOiBDYXRlZ29yeSBvZiB0aGUgam9iL3JvbGUNCmFkdmVydGlzZXJOYW1lOiBJbnN0aXR1dGlvbiB3aGljaCBvZmZlcmVkIHRoZSBqb2INCkxpc3RpbmcgRGF0ZTogRGF0ZSBvbiB3aGljaCB0aGUgam9iIGhhcyBiZWVuIHBvc3RlZA0KZXhwaXJ5IERhdGU6IExhc3QgZGF0ZSBmb3IgYXBwbHlpbmcgZm9yIHRoZSBqb2INCnRlYXNlcjogYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcm9sZSBhbmQgam9iDQpOYXRpb246IENvdW50cnkgd2hlcmUgdGhlIHJvbGUgaXMgYXZhaWxhYmxlDQpsb2NhdGlvbjogbG9jYWxlIG9mIHRoZSB3b3JrIHBsYWNlDQpXb3JrdHlwZTogVHlwZSBvZiBqb2IgZXg6IEZ1bGwgdGltZSAsY29udHJhY3QgZXRjDQpTYWxhcnk6IFNhbGFyeSBleHBlY3RlZCBvZiB0aGUgcm9sZQ0KSXNyaWdodHRvd29ya3JlcXVpcmVkOiBZZXMvTm8gLCB3aGV0aGVyIGl0IHJlcXVpcmVzIGdvdnQgdmlzYSBjb25kaXRpb25zDQpEZXNrdG9wQUR0ZW1wbGF0ZTogYnJpZWYgdGVtcGxhdGUgb2YgdGhlIGpvYiBhcyBkaXNwbGF5ZWQgb24gdGhlIGRlc2t0b3ANClNlZWtqb2JsaXN0aW5nVVJMOiBVUkwgb2YgdGhlIGpvYiBsaXN0aW5nIG9uIHRoZSBzZWVrLmNvbQ0KTGFuZ3VhZ2VzOiBQcm9ncmFtbWluZyBsYW5ndWFnZXMgcmVxdWlyZWQgZm9yIHRoaXMgam9iL3JvbGUNCnJlY3J1aXRlcjogcGVyc29uL2luc3RpdHV0aW9uIHJlY3J1aXRpbmcgZm9yIHRoZSBqb2IgYW5kIHNvIG9uLg0KDQoqIFRoaXMgZGF0YXNldCBjYW4gYmUgZm91bmQgb24gaHR0cHM6Ly93d3cua2FnZ2xlLmNvbS9ub21pbGsvZGF0YS1zY2llbmNlLWpvYi1saXN0aW5ncy1hdXN0cmFsaWEtMjAxOTIwMjAuDQoNCiogVGhlIGZpcnN0IGRhdGFzZXQgaGFzIGJlZW4gcmVhZCB1c2luZyByZWFkX2NzdiBmdW5jdGlvbiBhbmQgc3RvcmVkIGluIGRhdGEgZnJhbWUgRGF0YTEuIGFuZCB0aGUgZGF0YXNldCBpcyBvdXRwdXQgdXNpbmcgaGVhZCgpIGZ1bmN0aW9uLiBTaW1pbGFybHkgZm9yIHRoZSBkYXRhc2V0IHdoZXJlIGl0IGlzIHN0b3JlZCBpbiB0aGUgZGF0YWZyYW1lIERhdGEyLg0KDQoqIFRvIG1lZXQgdGhlIHJlcXVpcmVtZW50ICMxIGdpdmVuIGluIGFzc2lnbm1lbnQgdGhlIDIgZGF0YXNldHMgaGF2ZSBiZWVuIG1lcmdlZCB1c2luZyBsZWZ0am9pbigpIGZ1bmNpdG9uIHdoZXJlIERhdGEyIGlzIGxlZnQgam9pbmVkIHdpdGggRGF0YTEgdGhhdCBtZWFucyBjb21wbGV0ZSBEYXRhMiBkYXRhc2V0IG1lcmdlZCB3aXRoIERhdGExIHVzaW5nIGNvbW1vbiB2YXJpYWJsZSB3aGljaCBoZXJlIGlzIGpvYnRpdGxlLg0KDQoqIFRoaXMgbWVyZ2VzIHRoZSBEYXRhIHNjaWVudGlzdCBqb2JzIGRhdGFzZXQgd2l0aCBhbGwgdGhlIGpvYnMgbGlzdGVkIGluIHRoZSBvdGhlciBkYXRhc2V0IGFuZCByZXN1bHRzIG9ubHkgaW4gRGF0YSBzY2llbmNlIGpvYnMgb24gYm90aCB0aGUgd2Vic2l0ZXMgd2l0aCBhbGwgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIGFyb3VuZCB0aGUgam9iIHBvc3RpbmcuDQoNCiogVGhpcyBtZXJnZWQgZGF0YXNldCB3aWxsIGJlIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBmb3IgdGhlIHN0dWR5Lg0KDQoNCiMjIFVuZGVyc3RhbmQgDQoNCg0KDQpgYGB7cn0NCg0Kc3VtbWFyeShEYXRhMykNCg0KY2xhc3MoRGF0YTMkbGlzdGluZ0RhdGUpDQpEYXRhMyRsaXN0aW5nRGF0ZTwtYXMuRGF0ZShEYXRhMyRsaXN0aW5nRGF0ZSkNCg0KY2xhc3MoRGF0YTMkZXhwaXJ5RGF0ZSkNCkRhdGEzJGV4cGlyeURhdGU8LWFzLkRhdGUoRGF0YTMkZXhwaXJ5RGF0ZSkNCg0KY2xhc3MoRGF0YTMkbGFzdF9zZWVuKQ0KY2xhc3MoRGF0YTMkam9iSWQpDQpEYXRhMyRqb2JJZDwtYXMuY2hhcmFjdGVyKERhdGEzJGpvYklkKQ0KDQoNCkRhdGEzJHdvcmtUeXBlPC1mYWN0b3IoRGF0YTMkd29ya1R5cGUsbGFiZWxzID0gYygiQ2FzdWFsL1ZhY2F0aW9uIiwiQ29udHJhY3QvVGVtcCIsICAgIkZ1bGwgVGltZSIgLCAgICAgICJQYXJ0IFRpbWUiKSkNCmNsYXNzKERhdGEzJHdvcmtUeXBlKQ0KbGV2ZWxzKERhdGEzJHdvcmtUeXBlKQ0KDQoNCmBgYA0KDQoNCiogVGhlIHZhcmlhYmxlcyBpbiB0aGUgRGF0YXNldCBEYXRhMyBhcmUgc3VtbWFyaXNlZCB1c2luZyB0aGUgc3VtbWFyeSBmdW5jdGlvbi4NCg0KKiBUaGUgdmFyaWFibGVzIGluIHRoZSBEYXRhc2V0IGFyZSBhbGwgZGlmZmVyZW50IHR5cGVzIHdoaWNoIGluY2x1ZGVzIG51bWVyaWNzLCBjaGFyYWN0ZXIgZXRjLg0KDQoqIEluIHRoZSBzdW1tYXJ5IGZ1bmN0aW9uLCB3ZSBzZWUgdGhhdCB2YXJpYWJsZXMgYXJlIENoYXJhY3RlciBkYXRhdHlwZXMgbGlrZSBzdW1tYXJ5LCBqb2JjbGFzc2lmaWNhdGlvbiBldGMgYW5kIG51bWVyaWNzIHN1Y2ggYXMgY29tcGFueXJhdGluZ3MgZXRjLg0KDQoqIGhlcmUgd2UgY2hlY2sgdGhlIGRhdGF0eXBlcyB1c2luZyBjbGFzcyBmdW5jdGlvbi4NCg0KKiB0aGUgbGlzdGluZyBkYXRlIGFuZCBleHBpcnkgZGF0ZSBhdHRyaWJ1dGVzIGFyZSBpbiAgIlBPU0lYY3QiICJQT1NJWHQiIERhdGF0eXBlcy4gSGVuY2UgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBEYXRlIGZvcm1hdCB1c2luZyBhcy5kYXRlIGZ1bmN0aW9uLg0KDQoqIEFuZCB0aGUgam9iaWQgYXR0cmlidXRlIHdoaWNoIGlzIGluIG51bWVyaWMgZGF0YXR5cGUgaGFzIGJlZW4gY29udmVydGVkIHRvIGNoYXJhY3RlciB0byBjaGVjayB0aGF0IHRoZSB2YXJpYWJsZXMgY2FuIGJlIGVhc2lseSBjb252ZXJ0ZWQgdG8gb3RoZXIgZGF0YXR5cGVzLg0KDQoqIFNpbmNlIHRoZSByZXF1aXJlbWVudCBvZiB0aGUgYXNzaWdubWVudCBtZW50aW9ucyB0byBoYXZlIGF0bGVhc3Qgb25lIGZhY3RvciB2YXJpYWJsZSBhbmQgdGhlIHZhcmlhYmxlIFdvcmt0eXBlIG5lZWRzIHRvIGJlIG9uZS4gVGhpcyB2YXJpYWJsZXMgaXMgY29udmVydGVkIHRvIGZhY3RvciB1c2luZyBmYWN0b3IgZnVuY3Rpb25zIGFuZCBsYWJlbGxlZC4NCg0KKiBUaGUgY2xhc3MgYW5kIGxldmVscyBvZiB0aGUgZmFjdG9yZWQgdmFyaWFibGUgaXMgY2hlY2tlZCB1c2luZyBjbGFzcyBhbmQgbGV2ZWwgZnVuY3Rpb24uDQoNCiogSGVuY2UgaW4gdGhpcyBzZWN0aW9uLCBUaGUgcmVxdWlyZW1lbnQgIzIgdG8gIzQgaGF2ZSBiZWVuIG1ldC4NCg0KDQojIwlUaWR5ICYgTWFuaXB1bGF0ZSBEYXRhIEkgDQoNCg0KDQpgYGB7cn0NCg0KRGF0YTE8LURhdGExJT4lc2VwYXJhdGUobG9jYXRpb24sIGludG8gPSBjKCJDaXR5IiwgIlN0YXRlIiksc2VwID0iICIpDQoNCmhlYWQoRGF0YTEkQ2l0eSkNCmhlYWQoRGF0YTEkU3RhdGUpDQpgYGANCg0KDQoqIFRoZSBEYXRhc2V0IERhdGExIGRvZXNub3QgY29uZm9ybSB0byB0aWR5IGRhdGEgcHJpbmNpcGxlcyBpbiBhIHdheSBiZWNhdXNlIGFzIHdlIGNhbiBzZWUgdGhhdCB0aGUgdmFyaWFibGUgbG9jYXRpb24gaXMgbm90IGF0b21pYyBpLmUgbm90IGEgc2luZ2xlIHZhbHVlLg0KDQoqIEluIHRpZHkgRGF0YSwNCjEuRWFjaCB2YXJpYWJsZSBtdXN0IGhhdmUgaXRzIG93biBjb2x1bW4uDQoyLkVhY2ggb2JzZXJ2YXRpb24gbXVzdCBoYXZlIGl0cyBvd24gcm93Lg0KMy5FYWNoIHZhbHVlIG11c3QgaGF2ZSBpdHMgb3duIGNlbGwuDQoNCiogU2luY2UgdGhpcyB2YXJpYWJsZSBjb3VsZCBiZSBzcGxpdCBpbnRvIGNpdHkgYW5kIHN0YXRlIHZhcmlhYmxlcyBhbmQgY29uZm9ybSB0byB0aWR5IGRhdGEgcHJpbmNpcGxlcywgdGhpcyBpcyBkb25lIHNvIHVzaW5nIHNlcGFyYXRlIGZ1bmN0aW9uLg0KDQoNCiMjCVRpZHkgJiBNYW5pcHVsYXRlIERhdGEgSUkgDQoNCg0KDQpgYGB7cn0NCg0KY2xhc3MoRGF0YTMkbGlzdGluZ0RhdGUpDQoNCmNsYXNzKERhdGEzJGV4cGlyeURhdGUpDQoNCkRhdGEzJGxpc3RpbmdEYXRlPC1hcy5EYXRlKERhdGEzJGxpc3RpbmdEYXRlLGZvcm1hdD0iJXl5eXkvJW1tLyVkZCIpDQoNCkRhdGEzJGV4cGlyeURhdGU8LWFzLkRhdGUoRGF0YTMkZXhwaXJ5RGF0ZSxmb3JtYXQ9IiV5eXl5LyVtbS8lZGQiKQ0KDQpEYXRhMzwtbXV0YXRlKERhdGEzLER1cmF0aW9uPShleHBpcnlEYXRlLWxpc3RpbmdEYXRlKSkNCg0KRGF0YTMkRHVyYXRpb24NCg0KDQpgYGANCg0KDQoqIEluIHRoaXMgc2VjdGlvbiwgd2UgYXJlIHJlcXVpcmVkIHRvIG11dGF0ZSBhIG5ldyB2YXJpYWJsZS4NCg0KKiBXZSBmaXJzdCBjaGVjayB0aGUgZGF0YXR5cGUgb2YgdGhlIGxpc3RpbmdEYXRlIGFuZCBleHBpcnlEYXRlIHVzaW5nIGNsYXNzIGZ1bmN0aW9uLg0KDQoqIFRoZW4gdGhlIHR3byB2YXJpYWJsZXMgYXJlIGNoYW5nZWQgdG8gZGF0ZSBkYXRhdHlwZXMgdXNpbmcgYXMuZGF0ZSBmdW5jdGlvbiBhcyBzaG93biBhYm92ZSB0byBhIGZvcm1hdCBhcyBtZW50aW9uZWQuDQoNCiogVGhlbiB1c2luZyBtdXRhdGUgZnVuY3Rpb24gRHVyYXRpb24gdmFyaWFibGUgaXMgY3JlYXRlZCB3aGljaCBnaXZlcyB0aGUgZHVyYXRpb24gaW4gZGF5cyBiZXR3ZWVuIHRoZSB0aGUgZGF0ZSB3aGVuIHRoZSBqb2IgaGFzIGJlZW4gcG9zdGVkIG9uIHRvIHRoZSB3ZWJzaXRlIGFuZCB3aGVuIGl0IGV4cGlyZXMgb24gdGhlIHNpdGUuDQoNCiogVGhpcyBjYW4gYmUgc2VlbiBpbiB0aGUgb3V0cHV0Lg0KDQojIwlTY2FuIEkgDQoNCg0KDQoNCmBgYHtyfQ0KDQpzdW0oaXMubmEoRGF0YTMpKQ0KDQpjb2xTdW1zKGlzLm5hKERhdGEzKSkNCg0KRGF0YTMkZGF5c19hZ288LSBpbXB1dGUoRGF0YTMkZGF5c19hZ28sIGZ1biA9IG1lYW4pIA0KDQpEYXRhMyRyYXRpbmdzPC1pbXB1dGUoRGF0YTMkcmF0aW5ncyxmdW49bWVhbikNCg0KRGF0YTM8LXNlbGVjdChEYXRhMywtY29tcGFueU5hbWU6LWNvbXBhbnlSYXRpbmcpDQoNCkRhdGEzPC1zZWxlY3QoRGF0YTMsLWNvbXBhbnlQcm9maWxlVXJsKQ0KDQpEYXRhMzwtc2VsZWN0KERhdGEzLC1jcGFnZSwtY29tcGFueSwtbG9jYXRpb24sLXN1bW1hcnkpDQoNCkRhdGEzJGFyZWE8LWltcHV0ZShEYXRhMyRhcmVhLGZ1bj1tb2RlKQ0KDQpEYXRhMyRzdWJ1cmI8LWltcHV0ZShEYXRhMyRzdWJ1cmIsZnVuPW1vZGUpDQoNCkRhdGEzJHNhbGFyeV9zdHJpbmc8LWltcHV0ZShEYXRhMyRzYWxhcnlfc3RyaW5nLGZ1biA9IG1vZGUpDQoNCkRhdGEzJGRlc2t0b3BBZFRlbXBsYXRlPC1pbXB1dGUoRGF0YTMkZGVza3RvcEFkVGVtcGxhdGUsZnVuPW1vZGUpDQoNCmhlYWQoRGF0YTMpDQoNCnNhcHBseShEYXRhMyxpcy5pbmZpbml0ZSkNCg0KYGBgDQoNCg0KKiBOb3cgd2UgY2hlY2sgdGhlIG1pc3NpbmcgdmFsdWVzIGluIHRoZSBkYXRhc2V0Lg0KDQoqIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUgZnVuY3Rpb24gaXMubmEgYXMgYWJvdmUgYW5kIGFsc28gdGhlIG51bWJlciBvZiBOQSdzIGluIHRoZSBjb2x1bW5zIGlzIGFsc28gb2J0YWluZWQgdXNpbmcgY29sU3VtcyBmdW5jdGlvbi4NCg0KKiBTaW5jZSB0aGVyZSBhcmUgYSBsb3Qgb2YgbWlzc2luZyB2YWx1ZXMgZm91bmQsIHdlIGRlY2lkZSB0byBpbXB1dGUgdGhlbSB1c2luZyBzdWl0YWJsZSBtZXRob2QuDQoNCiogZGF5c19hZ28gYW5kIHJhdGluZ3MgYXR0cmlidXRlcyBhcmUgaW1wdXRlZCB1c2luZyBpbXB1dGUgZnVuY3Rpb24gd2l0aCBtZWFuIHZhbHVlcyBzaW5jZSBpdHMgYSBudW1lcmljIHZhcmlhYmxlLg0KDQoqIEZldyBvZiB0aGUgdmFyaWFibGVzIGxpa2UgY29tcGFueSByZWxhdGVkIHdoaWNoIGhhdmUgYmVlbiBub3QgY29tcGxldGVseSBwcm92aWRlZCBoYXZlIGJlZW4gZXhjbHVkZWQgc2luY2UgaW1wdXRpbmcgd2l0aCByYW5kb20gdmFsdWVzIGlzIG1lYW5pbmdsZXNzLg0KDQoqIFRoaXMgaGFzIGJlZW4gZGVwaWN0ZWQgaW4gdGhlIGFib3ZlIGNvZGUgdXNpbmcgc2VsZWN0IGZ1bmN0aW9uLg0KDQoqIGFuZCBldmVuIHRoZSBvdGhlciB2YXJpYWJsZXMgc3VjaCBhcyBhcmVhLHN1YnVyYnMsc2FsYXJ5IGV0YyB3aGljaCBhcmUgY2F0ZWdvcmljYWwgdmFyaWFibGVzIGhhdmluZyBtaXNzaW5nIHZhbHVlcyBoYXZlIGJlZW4gaW1wdXRlZCB1c2luZyB0aGUgaW1wdXRlIGZ1bmN0aW9uIHdpdGggdGhlaXIgbW9kZSB2YWx1ZXMuDQoNCiogVGhlbiBubyBlcnJvcnMgYXJlIGZvdW5kIGluIHRoaXMgZGF0YXNldCBhcyBlYWNoIHZhcmlhYmxlcyBoYXZlIG1lYW5pbmdmdWwgdmFsdWVzIGFuZCBubyBpbmNvbnNpc3RlbmNpZXMgZm91bmQuDQoNCiogQWxzbyB0byBmaW5kIHNwZWNpYWwgdmFsdWVzIGluIHRoZSBkYXRhc2V0LCB3ZSB1c2Ugc2FwcGx5IGZ1bmN0aW9uIGFzIHNob3duIGFuZCBmaW5kIHRoYXQgdGhlcmUgYXJlIG5vIHNwZWNpYWwgdmFsdWVzLg0KDQojIwlTY2FuIElJDQoNCg0KDQpgYGB7cn0NCg0KDQpjbGFzcyhEYXRhMyREdXJhdGlvbikNCg0KRGF0YTMkRHVyYXRpb248LWFzLm51bWVyaWMoRGF0YTMkRHVyYXRpb24pDQpEYXRhMyRyYXRpbmdzPC1hcy5udW1lcmljKERhdGEzJHJhdGluZ3MpDQpEYXRhMyRkYXlzX2FnbzwtYXMubnVtZXJpYyhEYXRhMyRkYXlzX2FnbykNCmJveHBsb3QoRGF0YTMkRHVyYXRpb24pDQoNCmJveHBsb3QoRGF0YTMkcmF0aW5ncykNCg0KYm94cGxvdChEYXRhMyRkYXlzX2FnbykNCg0KYGBgDQoNCg0KKiBUbyBjaGVjayB0aGUgb3V0bGllcnMgaW4gdGhlIGRhdGFzZXQgLCB3ZSB1c2UgYm94cGxvdCBmdW5jdGlvbi4NCg0KKiBTaW5jZSB3ZSBkbyBub3QgZmluZCBhbnkgdW51c3VhbCBvdXRsaWVycyBpbiB0aHNpIGRhdGFzZXQsIHdlIGxldCBpdCB0aGUgd2F5IGl0IGlzLg0KDQoqIFdlIGNhbiBzZWUgdGhhdCB0aGUgdmFyaWFibGVzIGR1cmF0aW9uLGRheXMgYWdvIGFuZCByYXRpbmdzIGRvIG5vdCBoYXZlIGFueSB1bnVzdWFsIG91dGxpZXJzLg0KDQoqIHZhcmlhYmxlIHJhdGluZ3MgY29udGFpbnMgcmF0aW5ncyBnaXZlbiBieSB0aGUgZW1wbG95ZWVzIHdoaWNoIHZhcnkuDQoNCiMjCVRyYW5zZm9ybSANCg0KDQpgYGB7cn0NCg0KaGlzdChEYXRhMyRyYXRpbmdzKQ0KDQpzcV9yYXRpbmdzPC1zcXJ0KERhdGEzJHJhdGluZ3MpDQpoaXN0KHNxX3JhdGluZ3MpDQpyZWNlcDwtMS9EYXRhMyRyYXRpbmdzDQpoaXN0KHJlY2VwKQ0KRGF0YTMkcmF0aW5nczwtYXMubnVtZXJpYyhEYXRhMyRyYXRpbmdzKQ0KaGlzdChEYXRhMyRyYXRpbmdzKQ0KRGF0YTMkZGF5c19hZ288LWFzLm51bWVyaWMoRGF0YTMkZGF5c19hZ28pDQpoaXN0KERhdGEzJER1cmF0aW9uKQ0KaGlzdChEYXRhMyRkYXlzX2FnbykNCg0KYm94X3JhdDwtQm94Q294KERhdGEzJHJhdGluZ3MsbGFtYmRhID0gImF1dG8iKQ0KaGlzdChib3hfcmF0KQ0KDQoNCmBgYA0KDQoqIEhlcmUgd2UgbmVlZCBhcHBseSB0cmFuZm9ybWF0aW9uIHRvIG9uZSBvZiB0aGUgdmFyaWFibGUgb2YgdGhlIGRhdGFzZXQuDQoNCiogdGhlIHZhcmlhYmxlIHJhdGluZ3MgaXMgdGFrZW4gdG8gYXBwbHkgdHJhbmZvcm1hdGlvbiB0byBjaGFuZ2UgdGhlIHNjYWxlIGZvciBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgdmFyaWFibGUuDQoNCiogSGlzdCBmdW5jdGlvbiBpcyB1c2VkIHRvIGtub3cgdGhlIHNwcmVhZCBvZiB0aGUgdmFyaWFibGUuDQoNCiogc3FydCBmdW5jdGlvbiBpcyB1c2VkIHRvIHRha2Ugc3F1YXJlIHJvb3QgdmFsdWVzIGFuZCBwbG90IGhpc3RvZ3JhbS4NCg0KKiBUaGVuIHJlY2lwcm9jYWwgdHJhbnNmb3JtYXRpb24gZ2l2ZXMgYmV0dGVyIHJlc3VsdHMuDQoNCiogVGhlIEJveENveCB0cmFuc2Zvcm1hdGlvbiBtZXRob2QgaXMgYXBwbGllZCB0byB0aGUgcmF0aW5ncyB2YXJpYWJsZSBhbmQgd2hvc2UgcmVzdWx0cyBjYW4gYmUgc2VlbiBpbiB0aGUgaGlzdG9ncmFtLg0KDQoNClJlZmVyZW5jZXM6DQoNCiogVGhvbWFzLCBTLiwgMjAxOS4gRGF0YSBTY2llbnRpc3QgSm9icyBJbiBBdXN0cmFsaWEgT2N0b2JlciAyNSAyMDE5LiBbb25saW5lXSBLYWdnbGUuY29tLiBBdmFpbGFibGUgYXQ6IDxodHRwczovL3d3dy5rYWdnbGUuY29tL3NhbnRva2FsYXlpbC9kYXRhLXNjaWVudGlzdC1qb2JzLWluLWF1c3RyYWxpYS1vY3RvYmVyLTI1LTIwMTk+IFtBY2Nlc3NlZCA2IEp1bmUgMjAyMF0uDQoNCiogS2FnZ2xlLmNvbS4gMjAyMC4gRGF0YSBTY2llbmNlIEpvYiBMaXN0aW5ncyAtIEF1c3RyYWxpYSAtIDIwMTktMjAyMC4gW29ubGluZV0gQXZhaWxhYmxlIGF0OiA8aHR0cHM6Ly93d3cua2FnZ2xlLmNvbS9ub21pbGsvZGF0YS1zY2llbmNlLWpvYi1saXN0aW5ncy1hdXN0cmFsaWEtMjAxOTIwMjA+IFtBY2Nlc3NlZCA2IEp1bmUgMjAyMF0uDQo=