1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
// This file is generated by rust-protobuf 3.3.0. Do not edit
// .proto file is parsed by protoc --rust-out=...
// @generated

// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_results)]
#![allow(unused_mut)]

//! Generated file from `steps/sp_steps_detective.proto`

/// Generated files are compatible only with the same version
/// of protobuf runtime.
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_3_0;

// @@protoc_insertion_point(message:protos.steps.DetectiveStep)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct DetectiveStep {
    // message fields
    // @@protoc_insertion_point(field:protos.steps.DetectiveStep.path)
    pub path: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:protos.steps.DetectiveStep.args)
    pub args: ::std::vec::Vec<::std::string::String>,
    // @@protoc_insertion_point(field:protos.steps.DetectiveStep.negate)
    pub negate: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:protos.steps.DetectiveStep.type)
    pub type_: ::protobuf::EnumOrUnknown<DetectiveType>,
    // special fields
    // @@protoc_insertion_point(special_field:protos.steps.DetectiveStep.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a DetectiveStep {
    fn default() -> &'a DetectiveStep {
        <DetectiveStep as ::protobuf::Message>::default_instance()
    }
}

impl DetectiveStep {
    pub fn new() -> DetectiveStep {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(4);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "path",
            |m: &DetectiveStep| { &m.path },
            |m: &mut DetectiveStep| { &mut m.path },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "args",
            |m: &DetectiveStep| { &m.args },
            |m: &mut DetectiveStep| { &mut m.args },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "negate",
            |m: &DetectiveStep| { &m.negate },
            |m: &mut DetectiveStep| { &mut m.negate },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "type",
            |m: &DetectiveStep| { &m.type_ },
            |m: &mut DetectiveStep| { &mut m.type_ },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<DetectiveStep>(
            "DetectiveStep",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for DetectiveStep {
    const NAME: &'static str = "DetectiveStep";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.path = ::std::option::Option::Some(is.read_string()?);
                },
                18 => {
                    self.args.push(is.read_string()?);
                },
                24 => {
                    self.negate = ::std::option::Option::Some(is.read_bool()?);
                },
                32 => {
                    self.type_ = is.read_enum_or_unknown()?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.path.as_ref() {
            my_size += ::protobuf::rt::string_size(1, &v);
        }
        for value in &self.args {
            my_size += ::protobuf::rt::string_size(2, &value);
        };
        if let Some(v) = self.negate {
            my_size += 1 + 1;
        }
        if self.type_ != ::protobuf::EnumOrUnknown::new(DetectiveType::DETECTIVE_TYPE_UNKNOWN) {
            my_size += ::protobuf::rt::int32_size(4, self.type_.value());
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.path.as_ref() {
            os.write_string(1, v)?;
        }
        for v in &self.args {
            os.write_string(2, &v)?;
        };
        if let Some(v) = self.negate {
            os.write_bool(3, v)?;
        }
        if self.type_ != ::protobuf::EnumOrUnknown::new(DetectiveType::DETECTIVE_TYPE_UNKNOWN) {
            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&self.type_))?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> DetectiveStep {
        DetectiveStep::new()
    }

    fn clear(&mut self) {
        self.path = ::std::option::Option::None;
        self.args.clear();
        self.negate = ::std::option::Option::None;
        self.type_ = ::protobuf::EnumOrUnknown::new(DetectiveType::DETECTIVE_TYPE_UNKNOWN);
        self.special_fields.clear();
    }

    fn default_instance() -> &'static DetectiveStep {
        static instance: DetectiveStep = DetectiveStep {
            path: ::std::option::Option::None,
            args: ::std::vec::Vec::new(),
            negate: ::std::option::Option::None,
            type_: ::protobuf::EnumOrUnknown::from_i32(0),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for DetectiveStep {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("DetectiveStep").unwrap()).clone()
    }
}

impl ::std::fmt::Display for DetectiveStep {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for DetectiveStep {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:protos.steps.DetectiveType)
pub enum DetectiveType {
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_UNKNOWN)
    DETECTIVE_TYPE_UNKNOWN = 0,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_IS_EMPTY)
    DETECTIVE_TYPE_IS_EMPTY = 1000,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_HAS_FIELD)
    DETECTIVE_TYPE_HAS_FIELD = 1001,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_IS_TYPE)
    DETECTIVE_TYPE_IS_TYPE = 1002,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_STRING_CONTAINS_ANY)
    DETECTIVE_TYPE_STRING_CONTAINS_ANY = 1003,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_STRING_CONTAINS_ALL)
    DETECTIVE_TYPE_STRING_CONTAINS_ALL = 1004,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_STRING_EQUAL)
    DETECTIVE_TYPE_STRING_EQUAL = 1005,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_IPV4_ADDRESS)
    DETECTIVE_TYPE_IPV4_ADDRESS = 1006,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_IPV6_ADDRESS)
    DETECTIVE_TYPE_IPV6_ADDRESS = 1007,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_MAC_ADDRESS)
    DETECTIVE_TYPE_MAC_ADDRESS = 1008,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_REGEX)
    DETECTIVE_TYPE_REGEX = 1009,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_TIMESTAMP_RFC3339)
    DETECTIVE_TYPE_TIMESTAMP_RFC3339 = 1010,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_TIMESTAMP_UNIX_NANO)
    DETECTIVE_TYPE_TIMESTAMP_UNIX_NANO = 1011,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_TIMESTAMP_UNIX)
    DETECTIVE_TYPE_TIMESTAMP_UNIX = 1012,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_BOOLEAN_TRUE)
    DETECTIVE_TYPE_BOOLEAN_TRUE = 1013,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_BOOLEAN_FALSE)
    DETECTIVE_TYPE_BOOLEAN_FALSE = 1014,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_UUID)
    DETECTIVE_TYPE_UUID = 1015,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_URL)
    DETECTIVE_TYPE_URL = 1016,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_HOSTNAME)
    DETECTIVE_TYPE_HOSTNAME = 1017,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_STRING_LENGTH_MIN)
    DETECTIVE_TYPE_STRING_LENGTH_MIN = 1018,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_STRING_LENGTH_MAX)
    DETECTIVE_TYPE_STRING_LENGTH_MAX = 1019,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_STRING_LENGTH_RANGE)
    DETECTIVE_TYPE_STRING_LENGTH_RANGE = 1020,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_SEMVER)
    DETECTIVE_TYPE_SEMVER = 2021,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_ANY)
    DETECTIVE_TYPE_PII_ANY = 2000,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_CREDIT_CARD)
    DETECTIVE_TYPE_PII_CREDIT_CARD = 2001,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_SSN)
    DETECTIVE_TYPE_PII_SSN = 2002,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_EMAIL)
    DETECTIVE_TYPE_PII_EMAIL = 2003,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_PHONE)
    DETECTIVE_TYPE_PII_PHONE = 2004,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_DRIVER_LICENSE)
    DETECTIVE_TYPE_PII_DRIVER_LICENSE = 2005,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_PASSPORT_ID)
    DETECTIVE_TYPE_PII_PASSPORT_ID = 2006,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_VIN_NUMBER)
    DETECTIVE_TYPE_PII_VIN_NUMBER = 2007,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_SERIAL_NUMBER)
    DETECTIVE_TYPE_PII_SERIAL_NUMBER = 2008,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_LOGIN)
    DETECTIVE_TYPE_PII_LOGIN = 2009,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_TAXPAYER_ID)
    DETECTIVE_TYPE_PII_TAXPAYER_ID = 2010,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_ADDRESS)
    DETECTIVE_TYPE_PII_ADDRESS = 2011,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_SIGNATURE)
    DETECTIVE_TYPE_PII_SIGNATURE = 2012,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_GEOLOCATION)
    DETECTIVE_TYPE_PII_GEOLOCATION = 2013,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_EDUCATION)
    DETECTIVE_TYPE_PII_EDUCATION = 2014,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_FINANCIAL)
    DETECTIVE_TYPE_PII_FINANCIAL = 2015,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_PII_HEALTH)
    DETECTIVE_TYPE_PII_HEALTH = 2016,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_NUMERIC_EQUAL_TO)
    DETECTIVE_TYPE_NUMERIC_EQUAL_TO = 3000,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_NUMERIC_GREATER_THAN)
    DETECTIVE_TYPE_NUMERIC_GREATER_THAN = 3001,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_NUMERIC_GREATER_EQUAL)
    DETECTIVE_TYPE_NUMERIC_GREATER_EQUAL = 3002,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_NUMERIC_LESS_THAN)
    DETECTIVE_TYPE_NUMERIC_LESS_THAN = 3003,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_NUMERIC_LESS_EQUAL)
    DETECTIVE_TYPE_NUMERIC_LESS_EQUAL = 3004,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_NUMERIC_RANGE)
    DETECTIVE_TYPE_NUMERIC_RANGE = 3005,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_NUMERIC_MIN)
    DETECTIVE_TYPE_NUMERIC_MIN = 3006,
    // @@protoc_insertion_point(enum_value:protos.steps.DetectiveType.DETECTIVE_TYPE_NUMERIC_MAX)
    DETECTIVE_TYPE_NUMERIC_MAX = 3007,
}

impl ::protobuf::Enum for DetectiveType {
    const NAME: &'static str = "DetectiveType";

    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<DetectiveType> {
        match value {
            0 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_UNKNOWN),
            1000 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_IS_EMPTY),
            1001 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_HAS_FIELD),
            1002 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_IS_TYPE),
            1003 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_CONTAINS_ANY),
            1004 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_CONTAINS_ALL),
            1005 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_EQUAL),
            1006 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_IPV4_ADDRESS),
            1007 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_IPV6_ADDRESS),
            1008 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_MAC_ADDRESS),
            1009 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_REGEX),
            1010 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_TIMESTAMP_RFC3339),
            1011 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_TIMESTAMP_UNIX_NANO),
            1012 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_TIMESTAMP_UNIX),
            1013 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_BOOLEAN_TRUE),
            1014 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_BOOLEAN_FALSE),
            1015 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_UUID),
            1016 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_URL),
            1017 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_HOSTNAME),
            1018 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_MIN),
            1019 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_MAX),
            1020 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_RANGE),
            2021 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_SEMVER),
            2000 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_ANY),
            2001 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_CREDIT_CARD),
            2002 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_SSN),
            2003 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_EMAIL),
            2004 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_PHONE),
            2005 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_DRIVER_LICENSE),
            2006 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_PASSPORT_ID),
            2007 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_VIN_NUMBER),
            2008 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_SERIAL_NUMBER),
            2009 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_LOGIN),
            2010 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_TAXPAYER_ID),
            2011 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_ADDRESS),
            2012 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_SIGNATURE),
            2013 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_GEOLOCATION),
            2014 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_EDUCATION),
            2015 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_FINANCIAL),
            2016 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_HEALTH),
            3000 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_EQUAL_TO),
            3001 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_GREATER_THAN),
            3002 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_GREATER_EQUAL),
            3003 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_LESS_THAN),
            3004 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_LESS_EQUAL),
            3005 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_RANGE),
            3006 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_MIN),
            3007 => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_MAX),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<DetectiveType> {
        match str {
            "DETECTIVE_TYPE_UNKNOWN" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_UNKNOWN),
            "DETECTIVE_TYPE_IS_EMPTY" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_IS_EMPTY),
            "DETECTIVE_TYPE_HAS_FIELD" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_HAS_FIELD),
            "DETECTIVE_TYPE_IS_TYPE" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_IS_TYPE),
            "DETECTIVE_TYPE_STRING_CONTAINS_ANY" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_CONTAINS_ANY),
            "DETECTIVE_TYPE_STRING_CONTAINS_ALL" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_CONTAINS_ALL),
            "DETECTIVE_TYPE_STRING_EQUAL" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_EQUAL),
            "DETECTIVE_TYPE_IPV4_ADDRESS" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_IPV4_ADDRESS),
            "DETECTIVE_TYPE_IPV6_ADDRESS" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_IPV6_ADDRESS),
            "DETECTIVE_TYPE_MAC_ADDRESS" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_MAC_ADDRESS),
            "DETECTIVE_TYPE_REGEX" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_REGEX),
            "DETECTIVE_TYPE_TIMESTAMP_RFC3339" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_TIMESTAMP_RFC3339),
            "DETECTIVE_TYPE_TIMESTAMP_UNIX_NANO" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_TIMESTAMP_UNIX_NANO),
            "DETECTIVE_TYPE_TIMESTAMP_UNIX" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_TIMESTAMP_UNIX),
            "DETECTIVE_TYPE_BOOLEAN_TRUE" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_BOOLEAN_TRUE),
            "DETECTIVE_TYPE_BOOLEAN_FALSE" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_BOOLEAN_FALSE),
            "DETECTIVE_TYPE_UUID" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_UUID),
            "DETECTIVE_TYPE_URL" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_URL),
            "DETECTIVE_TYPE_HOSTNAME" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_HOSTNAME),
            "DETECTIVE_TYPE_STRING_LENGTH_MIN" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_MIN),
            "DETECTIVE_TYPE_STRING_LENGTH_MAX" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_MAX),
            "DETECTIVE_TYPE_STRING_LENGTH_RANGE" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_RANGE),
            "DETECTIVE_TYPE_SEMVER" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_SEMVER),
            "DETECTIVE_TYPE_PII_ANY" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_ANY),
            "DETECTIVE_TYPE_PII_CREDIT_CARD" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_CREDIT_CARD),
            "DETECTIVE_TYPE_PII_SSN" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_SSN),
            "DETECTIVE_TYPE_PII_EMAIL" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_EMAIL),
            "DETECTIVE_TYPE_PII_PHONE" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_PHONE),
            "DETECTIVE_TYPE_PII_DRIVER_LICENSE" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_DRIVER_LICENSE),
            "DETECTIVE_TYPE_PII_PASSPORT_ID" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_PASSPORT_ID),
            "DETECTIVE_TYPE_PII_VIN_NUMBER" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_VIN_NUMBER),
            "DETECTIVE_TYPE_PII_SERIAL_NUMBER" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_SERIAL_NUMBER),
            "DETECTIVE_TYPE_PII_LOGIN" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_LOGIN),
            "DETECTIVE_TYPE_PII_TAXPAYER_ID" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_TAXPAYER_ID),
            "DETECTIVE_TYPE_PII_ADDRESS" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_ADDRESS),
            "DETECTIVE_TYPE_PII_SIGNATURE" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_SIGNATURE),
            "DETECTIVE_TYPE_PII_GEOLOCATION" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_GEOLOCATION),
            "DETECTIVE_TYPE_PII_EDUCATION" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_EDUCATION),
            "DETECTIVE_TYPE_PII_FINANCIAL" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_FINANCIAL),
            "DETECTIVE_TYPE_PII_HEALTH" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_PII_HEALTH),
            "DETECTIVE_TYPE_NUMERIC_EQUAL_TO" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_EQUAL_TO),
            "DETECTIVE_TYPE_NUMERIC_GREATER_THAN" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_GREATER_THAN),
            "DETECTIVE_TYPE_NUMERIC_GREATER_EQUAL" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_GREATER_EQUAL),
            "DETECTIVE_TYPE_NUMERIC_LESS_THAN" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_LESS_THAN),
            "DETECTIVE_TYPE_NUMERIC_LESS_EQUAL" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_LESS_EQUAL),
            "DETECTIVE_TYPE_NUMERIC_RANGE" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_RANGE),
            "DETECTIVE_TYPE_NUMERIC_MIN" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_MIN),
            "DETECTIVE_TYPE_NUMERIC_MAX" => ::std::option::Option::Some(DetectiveType::DETECTIVE_TYPE_NUMERIC_MAX),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [DetectiveType] = &[
        DetectiveType::DETECTIVE_TYPE_UNKNOWN,
        DetectiveType::DETECTIVE_TYPE_IS_EMPTY,
        DetectiveType::DETECTIVE_TYPE_HAS_FIELD,
        DetectiveType::DETECTIVE_TYPE_IS_TYPE,
        DetectiveType::DETECTIVE_TYPE_STRING_CONTAINS_ANY,
        DetectiveType::DETECTIVE_TYPE_STRING_CONTAINS_ALL,
        DetectiveType::DETECTIVE_TYPE_STRING_EQUAL,
        DetectiveType::DETECTIVE_TYPE_IPV4_ADDRESS,
        DetectiveType::DETECTIVE_TYPE_IPV6_ADDRESS,
        DetectiveType::DETECTIVE_TYPE_MAC_ADDRESS,
        DetectiveType::DETECTIVE_TYPE_REGEX,
        DetectiveType::DETECTIVE_TYPE_TIMESTAMP_RFC3339,
        DetectiveType::DETECTIVE_TYPE_TIMESTAMP_UNIX_NANO,
        DetectiveType::DETECTIVE_TYPE_TIMESTAMP_UNIX,
        DetectiveType::DETECTIVE_TYPE_BOOLEAN_TRUE,
        DetectiveType::DETECTIVE_TYPE_BOOLEAN_FALSE,
        DetectiveType::DETECTIVE_TYPE_UUID,
        DetectiveType::DETECTIVE_TYPE_URL,
        DetectiveType::DETECTIVE_TYPE_HOSTNAME,
        DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_MIN,
        DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_MAX,
        DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_RANGE,
        DetectiveType::DETECTIVE_TYPE_SEMVER,
        DetectiveType::DETECTIVE_TYPE_PII_ANY,
        DetectiveType::DETECTIVE_TYPE_PII_CREDIT_CARD,
        DetectiveType::DETECTIVE_TYPE_PII_SSN,
        DetectiveType::DETECTIVE_TYPE_PII_EMAIL,
        DetectiveType::DETECTIVE_TYPE_PII_PHONE,
        DetectiveType::DETECTIVE_TYPE_PII_DRIVER_LICENSE,
        DetectiveType::DETECTIVE_TYPE_PII_PASSPORT_ID,
        DetectiveType::DETECTIVE_TYPE_PII_VIN_NUMBER,
        DetectiveType::DETECTIVE_TYPE_PII_SERIAL_NUMBER,
        DetectiveType::DETECTIVE_TYPE_PII_LOGIN,
        DetectiveType::DETECTIVE_TYPE_PII_TAXPAYER_ID,
        DetectiveType::DETECTIVE_TYPE_PII_ADDRESS,
        DetectiveType::DETECTIVE_TYPE_PII_SIGNATURE,
        DetectiveType::DETECTIVE_TYPE_PII_GEOLOCATION,
        DetectiveType::DETECTIVE_TYPE_PII_EDUCATION,
        DetectiveType::DETECTIVE_TYPE_PII_FINANCIAL,
        DetectiveType::DETECTIVE_TYPE_PII_HEALTH,
        DetectiveType::DETECTIVE_TYPE_NUMERIC_EQUAL_TO,
        DetectiveType::DETECTIVE_TYPE_NUMERIC_GREATER_THAN,
        DetectiveType::DETECTIVE_TYPE_NUMERIC_GREATER_EQUAL,
        DetectiveType::DETECTIVE_TYPE_NUMERIC_LESS_THAN,
        DetectiveType::DETECTIVE_TYPE_NUMERIC_LESS_EQUAL,
        DetectiveType::DETECTIVE_TYPE_NUMERIC_RANGE,
        DetectiveType::DETECTIVE_TYPE_NUMERIC_MIN,
        DetectiveType::DETECTIVE_TYPE_NUMERIC_MAX,
    ];
}

impl ::protobuf::EnumFull for DetectiveType {
    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().enum_by_package_relative_name("DetectiveType").unwrap()).clone()
    }

    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
        let index = match self {
            DetectiveType::DETECTIVE_TYPE_UNKNOWN => 0,
            DetectiveType::DETECTIVE_TYPE_IS_EMPTY => 1,
            DetectiveType::DETECTIVE_TYPE_HAS_FIELD => 2,
            DetectiveType::DETECTIVE_TYPE_IS_TYPE => 3,
            DetectiveType::DETECTIVE_TYPE_STRING_CONTAINS_ANY => 4,
            DetectiveType::DETECTIVE_TYPE_STRING_CONTAINS_ALL => 5,
            DetectiveType::DETECTIVE_TYPE_STRING_EQUAL => 6,
            DetectiveType::DETECTIVE_TYPE_IPV4_ADDRESS => 7,
            DetectiveType::DETECTIVE_TYPE_IPV6_ADDRESS => 8,
            DetectiveType::DETECTIVE_TYPE_MAC_ADDRESS => 9,
            DetectiveType::DETECTIVE_TYPE_REGEX => 10,
            DetectiveType::DETECTIVE_TYPE_TIMESTAMP_RFC3339 => 11,
            DetectiveType::DETECTIVE_TYPE_TIMESTAMP_UNIX_NANO => 12,
            DetectiveType::DETECTIVE_TYPE_TIMESTAMP_UNIX => 13,
            DetectiveType::DETECTIVE_TYPE_BOOLEAN_TRUE => 14,
            DetectiveType::DETECTIVE_TYPE_BOOLEAN_FALSE => 15,
            DetectiveType::DETECTIVE_TYPE_UUID => 16,
            DetectiveType::DETECTIVE_TYPE_URL => 17,
            DetectiveType::DETECTIVE_TYPE_HOSTNAME => 18,
            DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_MIN => 19,
            DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_MAX => 20,
            DetectiveType::DETECTIVE_TYPE_STRING_LENGTH_RANGE => 21,
            DetectiveType::DETECTIVE_TYPE_SEMVER => 22,
            DetectiveType::DETECTIVE_TYPE_PII_ANY => 23,
            DetectiveType::DETECTIVE_TYPE_PII_CREDIT_CARD => 24,
            DetectiveType::DETECTIVE_TYPE_PII_SSN => 25,
            DetectiveType::DETECTIVE_TYPE_PII_EMAIL => 26,
            DetectiveType::DETECTIVE_TYPE_PII_PHONE => 27,
            DetectiveType::DETECTIVE_TYPE_PII_DRIVER_LICENSE => 28,
            DetectiveType::DETECTIVE_TYPE_PII_PASSPORT_ID => 29,
            DetectiveType::DETECTIVE_TYPE_PII_VIN_NUMBER => 30,
            DetectiveType::DETECTIVE_TYPE_PII_SERIAL_NUMBER => 31,
            DetectiveType::DETECTIVE_TYPE_PII_LOGIN => 32,
            DetectiveType::DETECTIVE_TYPE_PII_TAXPAYER_ID => 33,
            DetectiveType::DETECTIVE_TYPE_PII_ADDRESS => 34,
            DetectiveType::DETECTIVE_TYPE_PII_SIGNATURE => 35,
            DetectiveType::DETECTIVE_TYPE_PII_GEOLOCATION => 36,
            DetectiveType::DETECTIVE_TYPE_PII_EDUCATION => 37,
            DetectiveType::DETECTIVE_TYPE_PII_FINANCIAL => 38,
            DetectiveType::DETECTIVE_TYPE_PII_HEALTH => 39,
            DetectiveType::DETECTIVE_TYPE_NUMERIC_EQUAL_TO => 40,
            DetectiveType::DETECTIVE_TYPE_NUMERIC_GREATER_THAN => 41,
            DetectiveType::DETECTIVE_TYPE_NUMERIC_GREATER_EQUAL => 42,
            DetectiveType::DETECTIVE_TYPE_NUMERIC_LESS_THAN => 43,
            DetectiveType::DETECTIVE_TYPE_NUMERIC_LESS_EQUAL => 44,
            DetectiveType::DETECTIVE_TYPE_NUMERIC_RANGE => 45,
            DetectiveType::DETECTIVE_TYPE_NUMERIC_MIN => 46,
            DetectiveType::DETECTIVE_TYPE_NUMERIC_MAX => 47,
        };
        Self::enum_descriptor().value_by_index(index)
    }
}

impl ::std::default::Default for DetectiveType {
    fn default() -> Self {
        DetectiveType::DETECTIVE_TYPE_UNKNOWN
    }
}

impl DetectiveType {
    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<DetectiveType>("DetectiveType")
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n\x1esteps/sp_steps_detective.proto\x12\x0cprotos.steps\"\x9e\x01\n\rDe\
    tectiveStep\x12\x17\n\x04path\x18\x01\x20\x01(\tH\0R\x04path\x88\x01\x01\
    \x12\x12\n\x04args\x18\x02\x20\x03(\tR\x04args\x12\x1b\n\x06negate\x18\
    \x03\x20\x01(\x08H\x01R\x06negate\x88\x01\x01\x12/\n\x04type\x18\x04\x20\
    \x01(\x0e2\x1b.protos.steps.DetectiveTypeR\x04typeB\x07\n\x05_pathB\t\n\
    \x07_negate*\x8d\r\n\rDetectiveType\x12\x1a\n\x16DETECTIVE_TYPE_UNKNOWN\
    \x10\0\x12\x1c\n\x17DETECTIVE_TYPE_IS_EMPTY\x10\xe8\x07\x12\x1d\n\x18DET\
    ECTIVE_TYPE_HAS_FIELD\x10\xe9\x07\x12\x1b\n\x16DETECTIVE_TYPE_IS_TYPE\
    \x10\xea\x07\x12'\n\"DETECTIVE_TYPE_STRING_CONTAINS_ANY\x10\xeb\x07\x12'\
    \n\"DETECTIVE_TYPE_STRING_CONTAINS_ALL\x10\xec\x07\x12\x20\n\x1bDETECTIV\
    E_TYPE_STRING_EQUAL\x10\xed\x07\x12\x20\n\x1bDETECTIVE_TYPE_IPV4_ADDRESS\
    \x10\xee\x07\x12\x20\n\x1bDETECTIVE_TYPE_IPV6_ADDRESS\x10\xef\x07\x12\
    \x1f\n\x1aDETECTIVE_TYPE_MAC_ADDRESS\x10\xf0\x07\x12\x19\n\x14DETECTIVE_\
    TYPE_REGEX\x10\xf1\x07\x12%\n\x20DETECTIVE_TYPE_TIMESTAMP_RFC3339\x10\
    \xf2\x07\x12'\n\"DETECTIVE_TYPE_TIMESTAMP_UNIX_NANO\x10\xf3\x07\x12\"\n\
    \x1dDETECTIVE_TYPE_TIMESTAMP_UNIX\x10\xf4\x07\x12\x20\n\x1bDETECTIVE_TYP\
    E_BOOLEAN_TRUE\x10\xf5\x07\x12!\n\x1cDETECTIVE_TYPE_BOOLEAN_FALSE\x10\
    \xf6\x07\x12\x18\n\x13DETECTIVE_TYPE_UUID\x10\xf7\x07\x12\x17\n\x12DETEC\
    TIVE_TYPE_URL\x10\xf8\x07\x12\x1c\n\x17DETECTIVE_TYPE_HOSTNAME\x10\xf9\
    \x07\x12%\n\x20DETECTIVE_TYPE_STRING_LENGTH_MIN\x10\xfa\x07\x12%\n\x20DE\
    TECTIVE_TYPE_STRING_LENGTH_MAX\x10\xfb\x07\x12'\n\"DETECTIVE_TYPE_STRING\
    _LENGTH_RANGE\x10\xfc\x07\x12\x1a\n\x15DETECTIVE_TYPE_SEMVER\x10\xe5\x0f\
    \x12\x1b\n\x16DETECTIVE_TYPE_PII_ANY\x10\xd0\x0f\x12#\n\x1eDETECTIVE_TYP\
    E_PII_CREDIT_CARD\x10\xd1\x0f\x12\x1b\n\x16DETECTIVE_TYPE_PII_SSN\x10\
    \xd2\x0f\x12\x1d\n\x18DETECTIVE_TYPE_PII_EMAIL\x10\xd3\x0f\x12\x1d\n\x18\
    DETECTIVE_TYPE_PII_PHONE\x10\xd4\x0f\x12&\n!DETECTIVE_TYPE_PII_DRIVER_LI\
    CENSE\x10\xd5\x0f\x12#\n\x1eDETECTIVE_TYPE_PII_PASSPORT_ID\x10\xd6\x0f\
    \x12\"\n\x1dDETECTIVE_TYPE_PII_VIN_NUMBER\x10\xd7\x0f\x12%\n\x20DETECTIV\
    E_TYPE_PII_SERIAL_NUMBER\x10\xd8\x0f\x12\x1d\n\x18DETECTIVE_TYPE_PII_LOG\
    IN\x10\xd9\x0f\x12#\n\x1eDETECTIVE_TYPE_PII_TAXPAYER_ID\x10\xda\x0f\x12\
    \x1f\n\x1aDETECTIVE_TYPE_PII_ADDRESS\x10\xdb\x0f\x12!\n\x1cDETECTIVE_TYP\
    E_PII_SIGNATURE\x10\xdc\x0f\x12#\n\x1eDETECTIVE_TYPE_PII_GEOLOCATION\x10\
    \xdd\x0f\x12!\n\x1cDETECTIVE_TYPE_PII_EDUCATION\x10\xde\x0f\x12!\n\x1cDE\
    TECTIVE_TYPE_PII_FINANCIAL\x10\xdf\x0f\x12\x1e\n\x19DETECTIVE_TYPE_PII_H\
    EALTH\x10\xe0\x0f\x12$\n\x1fDETECTIVE_TYPE_NUMERIC_EQUAL_TO\x10\xb8\x17\
    \x12(\n#DETECTIVE_TYPE_NUMERIC_GREATER_THAN\x10\xb9\x17\x12)\n$DETECTIVE\
    _TYPE_NUMERIC_GREATER_EQUAL\x10\xba\x17\x12%\n\x20DETECTIVE_TYPE_NUMERIC\
    _LESS_THAN\x10\xbb\x17\x12&\n!DETECTIVE_TYPE_NUMERIC_LESS_EQUAL\x10\xbc\
    \x17\x12!\n\x1cDETECTIVE_TYPE_NUMERIC_RANGE\x10\xbd\x17\x12\x1f\n\x1aDET\
    ECTIVE_TYPE_NUMERIC_MIN\x10\xbe\x17\x12\x1f\n\x1aDETECTIVE_TYPE_NUMERIC_\
    MAX\x10\xbf\x17B:Z8github.com/streamdal/snitch-protos/build/go/protos/st\
    epsJ\xce\x1d\n\x06\x12\x04\0\0W\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\
    \x08\n\x01\x02\x12\x03\x02\0\x15\n\x08\n\x01\x08\x12\x03\x04\0O\n\t\n\
    \x02\x08\x0b\x12\x03\x04\0O\n5\n\x02\x05\0\x12\x04\x06\0P\x01\")\x201000\
    -1999\x20reserved\x20for\x20core\x20match\x20types\n\n\n\n\x03\x05\0\x01\
    \x12\x03\x06\x05\x12\n\x0b\n\x04\x05\0\x02\0\x12\x03\t\x02\x1d\n\x0c\n\
    \x05\x05\0\x02\0\x01\x12\x03\t\x02\x18\n\x0c\n\x05\x05\0\x02\0\x02\x12\
    \x03\t\x1b\x1c\n\x0b\n\x04\x05\0\x02\x01\x12\x03\n\x02!\n\x0c\n\x05\x05\
    \0\x02\x01\x01\x12\x03\n\x02\x19\n\x0c\n\x05\x05\0\x02\x01\x02\x12\x03\n\
    \x1c\x20\n\x0b\n\x04\x05\0\x02\x02\x12\x03\x0b\x02\"\n\x0c\n\x05\x05\0\
    \x02\x02\x01\x12\x03\x0b\x02\x1a\n\x0c\n\x05\x05\0\x02\x02\x02\x12\x03\
    \x0b\x1d!\n\x0b\n\x04\x05\0\x02\x03\x12\x03\x0c\x02\x20\n\x0c\n\x05\x05\
    \0\x02\x03\x01\x12\x03\x0c\x02\x18\n\x0c\n\x05\x05\0\x02\x03\x02\x12\x03\
    \x0c\x1b\x1f\n\x0b\n\x04\x05\0\x02\x04\x12\x03\r\x02,\n\x0c\n\x05\x05\0\
    \x02\x04\x01\x12\x03\r\x02$\n\x0c\n\x05\x05\0\x02\x04\x02\x12\x03\r'+\n\
    \x0b\n\x04\x05\0\x02\x05\x12\x03\x0e\x02,\n\x0c\n\x05\x05\0\x02\x05\x01\
    \x12\x03\x0e\x02$\n\x0c\n\x05\x05\0\x02\x05\x02\x12\x03\x0e'+\n\x0b\n\
    \x04\x05\0\x02\x06\x12\x03\x0f\x02%\n\x0c\n\x05\x05\0\x02\x06\x01\x12\
    \x03\x0f\x02\x1d\n\x0c\n\x05\x05\0\x02\x06\x02\x12\x03\x0f\x20$\n\x0b\n\
    \x04\x05\0\x02\x07\x12\x03\x10\x02%\n\x0c\n\x05\x05\0\x02\x07\x01\x12\
    \x03\x10\x02\x1d\n\x0c\n\x05\x05\0\x02\x07\x02\x12\x03\x10\x20$\n\x0b\n\
    \x04\x05\0\x02\x08\x12\x03\x11\x02%\n\x0c\n\x05\x05\0\x02\x08\x01\x12\
    \x03\x11\x02\x1d\n\x0c\n\x05\x05\0\x02\x08\x02\x12\x03\x11\x20$\n\x0b\n\
    \x04\x05\0\x02\t\x12\x03\x12\x02$\n\x0c\n\x05\x05\0\x02\t\x01\x12\x03\
    \x12\x02\x1c\n\x0c\n\x05\x05\0\x02\t\x02\x12\x03\x12\x1f#\n\x0b\n\x04\
    \x05\0\x02\n\x12\x03\x13\x02\x1e\n\x0c\n\x05\x05\0\x02\n\x01\x12\x03\x13\
    \x02\x16\n\x0c\n\x05\x05\0\x02\n\x02\x12\x03\x13\x19\x1d\n\x0b\n\x04\x05\
    \0\x02\x0b\x12\x03\x14\x02*\n\x0c\n\x05\x05\0\x02\x0b\x01\x12\x03\x14\
    \x02\"\n\x0c\n\x05\x05\0\x02\x0b\x02\x12\x03\x14%)\n\x0b\n\x04\x05\0\x02\
    \x0c\x12\x03\x15\x02,\n\x0c\n\x05\x05\0\x02\x0c\x01\x12\x03\x15\x02$\n\
    \x0c\n\x05\x05\0\x02\x0c\x02\x12\x03\x15'+\n\x0b\n\x04\x05\0\x02\r\x12\
    \x03\x16\x02'\n\x0c\n\x05\x05\0\x02\r\x01\x12\x03\x16\x02\x1f\n\x0c\n\
    \x05\x05\0\x02\r\x02\x12\x03\x16\"&\n\x0b\n\x04\x05\0\x02\x0e\x12\x03\
    \x17\x02%\n\x0c\n\x05\x05\0\x02\x0e\x01\x12\x03\x17\x02\x1d\n\x0c\n\x05\
    \x05\0\x02\x0e\x02\x12\x03\x17\x20$\n\x0b\n\x04\x05\0\x02\x0f\x12\x03\
    \x18\x02&\n\x0c\n\x05\x05\0\x02\x0f\x01\x12\x03\x18\x02\x1e\n\x0c\n\x05\
    \x05\0\x02\x0f\x02\x12\x03\x18!%\n\x0b\n\x04\x05\0\x02\x10\x12\x03\x19\
    \x02\x1d\n\x0c\n\x05\x05\0\x02\x10\x01\x12\x03\x19\x02\x15\n\x0c\n\x05\
    \x05\0\x02\x10\x02\x12\x03\x19\x18\x1c\n\x0b\n\x04\x05\0\x02\x11\x12\x03\
    \x1a\x02\x1c\n\x0c\n\x05\x05\0\x02\x11\x01\x12\x03\x1a\x02\x14\n\x0c\n\
    \x05\x05\0\x02\x11\x02\x12\x03\x1a\x17\x1b\n\x0b\n\x04\x05\0\x02\x12\x12\
    \x03\x1b\x02!\n\x0c\n\x05\x05\0\x02\x12\x01\x12\x03\x1b\x02\x19\n\x0c\n\
    \x05\x05\0\x02\x12\x02\x12\x03\x1b\x1c\x20\n\x0b\n\x04\x05\0\x02\x13\x12\
    \x03\x1c\x02*\n\x0c\n\x05\x05\0\x02\x13\x01\x12\x03\x1c\x02\"\n\x0c\n\
    \x05\x05\0\x02\x13\x02\x12\x03\x1c%)\n\x0b\n\x04\x05\0\x02\x14\x12\x03\
    \x1d\x02*\n\x0c\n\x05\x05\0\x02\x14\x01\x12\x03\x1d\x02\"\n\x0c\n\x05\
    \x05\0\x02\x14\x02\x12\x03\x1d%)\n\x0b\n\x04\x05\0\x02\x15\x12\x03\x1e\
    \x02,\n\x0c\n\x05\x05\0\x02\x15\x01\x12\x03\x1e\x02$\n\x0c\n\x05\x05\0\
    \x02\x15\x02\x12\x03\x1e'+\n\x0b\n\x04\x05\0\x02\x16\x12\x03\x1f\x02\x1f\
    \n\x0c\n\x05\x05\0\x02\x16\x01\x12\x03\x1f\x02\x17\n\x0c\n\x05\x05\0\x02\
    \x16\x02\x12\x03\x1f\x1a\x1e\nk\n\x04\x05\0\x02\x17\x12\x03$\x02\x20\x1a\
    B/\x20Payloads\x20containing\x20values\x20with\x20any\x20PII\x20-\x20run\
    s\x20all\x20PII\x20matchers\n2\x1a\x20PII\x20matchers\x20(2000-2999)\n\n\
    \x0c\n\x05\x05\0\x02\x17\x01\x12\x03$\x02\x18\n\x0c\n\x05\x05\0\x02\x17\
    \x02\x12\x03$\x1b\x1f\nC\n\x04\x05\0\x02\x18\x12\x03&\x02(\x1a6\x20Paylo\
    ads\x20containing\x20values\x20with\x20a\x20credit\x20card\x20number\n\n\
    \x0c\n\x05\x05\0\x02\x18\x01\x12\x03&\x02\x20\n\x0c\n\x05\x05\0\x02\x18\
    \x02\x12\x03&#'\nG\n\x04\x05\0\x02\x19\x12\x03(\x02\x20\x1a:\x20Payloads\
    \x20containing\x20values\x20with\x20a\x20social\x20security\x20number\n\
    \n\x0c\n\x05\x05\0\x02\x19\x01\x12\x03(\x02\x18\n\x0c\n\x05\x05\0\x02\
    \x19\x02\x12\x03(\x1b\x1f\n?\n\x04\x05\0\x02\x1a\x12\x03*\x02\"\x1a2\x20\
    Payloads\x20containing\x20values\x20with\x20an\x20email\x20address\n\n\
    \x0c\n\x05\x05\0\x02\x1a\x01\x12\x03*\x02\x1a\n\x0c\n\x05\x05\0\x02\x1a\
    \x02\x12\x03*\x1d!\n=\n\x04\x05\0\x02\x1b\x12\x03,\x02\"\x1a0\x20Payload\
    s\x20containing\x20values\x20with\x20a\x20phone\x20number\n\n\x0c\n\x05\
    \x05\0\x02\x1b\x01\x12\x03,\x02\x1a\n\x0c\n\x05\x05\0\x02\x1b\x02\x12\
    \x03,\x1d!\nA\n\x04\x05\0\x02\x1c\x12\x03.\x02+\x1a4\x20Payloads\x20cont\
    aining\x20values\x20with\x20a\x20driver's\x20license\n\n\x0c\n\x05\x05\0\
    \x02\x1c\x01\x12\x03.\x02#\n\x0c\n\x05\x05\0\x02\x1c\x02\x12\x03.&*\n<\n\
    \x04\x05\0\x02\x1d\x12\x030\x02(\x1a/\x20Payloads\x20containing\x20value\
    s\x20with\x20a\x20passport\x20ID\n\n\x0c\n\x05\x05\0\x02\x1d\x01\x12\x03\
    0\x02\x20\n\x0c\n\x05\x05\0\x02\x1d\x02\x12\x030#'\n;\n\x04\x05\0\x02\
    \x1e\x12\x032\x02'\x1a.\x20Payloads\x20containing\x20values\x20with\x20a\
    \x20VIN\x20number\n\n\x0c\n\x05\x05\0\x02\x1e\x01\x12\x032\x02\x1f\n\x0c\
    \n\x05\x05\0\x02\x1e\x02\x12\x032\"&\nL\n\x04\x05\0\x02\x1f\x12\x034\x02\
    *\x1a?\x20Payloads\x20containing\x20values\x20with\x20various\x20serial\
    \x20number\x20formats\n\n\x0c\n\x05\x05\0\x02\x1f\x01\x12\x034\x02\"\n\
    \x0c\n\x05\x05\0\x02\x1f\x02\x12\x034%)\n\x8e\x01\n\x04\x05\0\x02\x20\
    \x12\x036\x02\"\x1a\x80\x01\x20Payloads\x20containing\x20fields\x20named\
    \x20\"login\",\x20\"username\",\x20\"user\",\x20\"userid\",\x20\"user_id\
    \",\x20\"user\",\x20\"password\",\x20\"pass\",\x20\"passwd\",\x20\"pwd\"\
    \n\n\x0c\n\x05\x05\0\x02\x20\x01\x12\x036\x02\x1a\n\x0c\n\x05\x05\0\x02\
    \x20\x02\x12\x036\x1d!\n^\n\x04\x05\0\x02!\x12\x038\x02(\x1aQ\x20Payload\
    s\x20containing\x20fields\x20named\x20\"taxpayer_id\",\x20\"tax_id\",\
    \x20\"taxpayerid\",\x20\"taxid\"\n\n\x0c\n\x05\x05\0\x02!\x01\x12\x038\
    \x02\x20\n\x0c\n\x05\x05\0\x02!\x02\x12\x038#'\n}\n\x04\x05\0\x02\"\x12\
    \x03:\x02$\x1ap\x20Payloads\x20containing\x20fields\x20named\x20\"addres\
    s\",\x20\"street\",\x20\"city\",\x20\"state\",\x20\"zip\",\x20\"zipcode\
    \",\x20\"zip_code\",\x20\"country\"\n\n\x0c\n\x05\x05\0\x02\"\x01\x12\
    \x03:\x02\x1c\n\x0c\n\x05\x05\0\x02\"\x02\x12\x03:\x1f#\n|\n\x04\x05\0\
    \x02#\x12\x03<\x02&\x1ao\x20Payloads\x20containing\x20fields\x20named\
    \x20\"signature\",\x20\"signature_image\",\x20\"signature_image_url\",\
    \x20\"signature_image_uri\"\n\n\x0c\n\x05\x05\0\x02#\x01\x12\x03<\x02\
    \x1e\n\x0c\n\x05\x05\0\x02#\x02\x12\x03<!%\ny\n\x04\x05\0\x02$\x12\x03>\
    \x02(\x1al\x20Payloads\x20containing\x20values\x20that\x20contain\x20GPS\
    \x20data\x20or\x20coordinates\x20like\x20\"lat\",\x20\"lon\",\x20\"latit\
    ude\",\x20\"longitude\"\n\n\x0c\n\x05\x05\0\x02$\x01\x12\x03>\x02\x20\n\
    \x0c\n\x05\x05\0\x02$\x02\x12\x03>#'\n]\n\x04\x05\0\x02%\x12\x03@\x02&\
    \x1aP\x20Payloads\x20containing\x20fields\x20like\x20\"school\",\x20\"un\
    iversity\",\x20\"college\",\x20\"education\"\n\n\x0c\n\x05\x05\0\x02%\
    \x01\x12\x03@\x02\x1e\n\x0c\n\x05\x05\0\x02%\x02\x12\x03@!%\nk\n\x04\x05\
    \0\x02&\x12\x03B\x02&\x1a^\x20Payloads\x20containing\x20fields\x20like\
    \x20\"account\",\x20\"bank\",\x20\"credit\",\x20\"debit\",\x20\"financia\
    l\",\x20\"finance\"\n\n\x0c\n\x05\x05\0\x02&\x01\x12\x03B\x02\x1e\n\x0c\
    \n\x05\x05\0\x02&\x02\x12\x03B!%\nj\n\x04\x05\0\x02'\x12\x03D\x02#\x1a]\
    \x20Payloads\x20containing\x20fields\x20like\x20\"patient\",\x20\"health\
    \",\x20\"healthcare\",\x20\"health\x20care\",\x20\"medical\"\n\n\x0c\n\
    \x05\x05\0\x02'\x01\x12\x03D\x02\x1b\n\x0c\n\x05\x05\0\x02'\x02\x12\x03D\
    \x1e\"\n+\n\x04\x05\0\x02(\x12\x03H\x02(2\x1e\x20Numeric\x20matchers\x20\
    (3000-3999)\n\n\x0c\n\x05\x05\0\x02(\x01\x12\x03H\x02!\n\x0c\n\x05\x05\0\
    \x02(\x02\x12\x03H#'\n\x0b\n\x04\x05\0\x02)\x12\x03I\x02-\n\x0c\n\x05\
    \x05\0\x02)\x01\x12\x03I\x02%\n\x0c\n\x05\x05\0\x02)\x02\x12\x03I(,\n\
    \x0b\n\x04\x05\0\x02*\x12\x03J\x02.\n\x0c\n\x05\x05\0\x02*\x01\x12\x03J\
    \x02&\n\x0c\n\x05\x05\0\x02*\x02\x12\x03J)-\n\x0b\n\x04\x05\0\x02+\x12\
    \x03K\x02*\n\x0c\n\x05\x05\0\x02+\x01\x12\x03K\x02\"\n\x0c\n\x05\x05\0\
    \x02+\x02\x12\x03K%)\n\x0b\n\x04\x05\0\x02,\x12\x03L\x02+\n\x0c\n\x05\
    \x05\0\x02,\x01\x12\x03L\x02#\n\x0c\n\x05\x05\0\x02,\x02\x12\x03L&*\n\
    \x0b\n\x04\x05\0\x02-\x12\x03M\x02&\n\x0c\n\x05\x05\0\x02-\x01\x12\x03M\
    \x02\x1e\n\x0c\n\x05\x05\0\x02-\x02\x12\x03M!%\n\x0b\n\x04\x05\0\x02.\
    \x12\x03N\x02$\n\x0c\n\x05\x05\0\x02.\x01\x12\x03N\x02\x1c\n\x0c\n\x05\
    \x05\0\x02.\x02\x12\x03N\x1f#\n\x0b\n\x04\x05\0\x02/\x12\x03O\x02$\n\x0c\
    \n\x05\x05\0\x02/\x01\x12\x03O\x02\x1c\n\x0c\n\x05\x05\0\x02/\x02\x12\
    \x03O\x1f#\n\n\n\x02\x04\0\x12\x04R\0W\x01\n\n\n\x03\x04\0\x01\x12\x03R\
    \x08\x15\n\x0b\n\x04\x04\0\x02\0\x12\x03S\x02\x1b\n\x0c\n\x05\x04\0\x02\
    \0\x04\x12\x03S\x02\n\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03S\x0b\x11\n\x0c\
    \n\x05\x04\0\x02\0\x01\x12\x03S\x12\x16\n\x0c\n\x05\x04\0\x02\0\x03\x12\
    \x03S\x19\x1a\n,\n\x04\x04\0\x02\x01\x12\x03T\x02\x1b\"\x1f\x20args\x20d\
    etermined\x20by\x20match_type\n\n\x0c\n\x05\x04\0\x02\x01\x04\x12\x03T\
    \x02\n\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03T\x0b\x11\n\x0c\n\x05\x04\0\
    \x02\x01\x01\x12\x03T\x12\x16\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03T\x19\
    \x1a\n\x0b\n\x04\x04\0\x02\x02\x12\x03U\x02\x1b\n\x0c\n\x05\x04\0\x02\
    \x02\x04\x12\x03U\x02\n\n\x0c\n\x05\x04\0\x02\x02\x05\x12\x03U\x0b\x0f\n\
    \x0c\n\x05\x04\0\x02\x02\x01\x12\x03U\x10\x16\n\x0c\n\x05\x04\0\x02\x02\
    \x03\x12\x03U\x19\x1a\n\x0b\n\x04\x04\0\x02\x03\x12\x03V\x02\x19\n\x0c\n\
    \x05\x04\0\x02\x03\x06\x12\x03V\x02\x0f\n\x0c\n\x05\x04\0\x02\x03\x01\
    \x12\x03V\x10\x14\n\x0c\n\x05\x04\0\x02\x03\x03\x12\x03V\x17\x18b\x06pro\
    to3\
";

/// `FileDescriptorProto` object which was a source for this generated file
fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
    file_descriptor_proto_lazy.get(|| {
        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
    })
}

/// `FileDescriptor` object which allows dynamic access to files
pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
    file_descriptor.get(|| {
        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
            let mut deps = ::std::vec::Vec::with_capacity(0);
            let mut messages = ::std::vec::Vec::with_capacity(1);
            messages.push(DetectiveStep::generated_message_descriptor_data());
            let mut enums = ::std::vec::Vec::with_capacity(1);
            enums.push(DetectiveType::generated_enum_descriptor_data());
            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
                file_descriptor_proto(),
                deps,
                messages,
                enums,
            )
        });
        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
    })
}