summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2020-12-04 14:35:52 +0100
committerPatrick Spek <p.spek@tyil.nl>2020-12-04 14:35:52 +0100
commit2cb56ce50e0940618e428078cbd1e5113e7ec9ac (patch)
treec09de753c904db1a118eff19daa5dfbff193f4f5
parent1e68eef8792430e164c64cd60ae714502b350e7b (diff)
downloadadvent-of-code-2cb56ce50e0940618e428078cbd1e5113e7ec9ac.tar.gz
advent-of-code-2cb56ce50e0940618e428078cbd1e5113e7ec9ac.tar.bz2
Add day 4 solutionsHEADmaster
-rwxr-xr-x2020/04.raku1227
1 files changed, 1227 insertions, 0 deletions
diff --git a/2020/04.raku b/2020/04.raku
new file mode 100755
index 0000000..901bad8
--- /dev/null
+++ b/2020/04.raku
@@ -0,0 +1,1227 @@
+#!/usr/bin/env raku
+
+use v6.d;
+
+#| Run with --one or --two to get the solution to a particular part.
+proto sub MAIN (
+ *%params
+) { * }
+
+multi sub MAIN (
+ #| Show the solution of part one.
+ Bool:D :$one!,
+) {
+ data()
+ .split("\n\n")
+ .map(*.words)
+ .map({ passport-to-hash($_) })
+ .map({ check-passport-values($_) })
+ .grep({ is-all-valid($_) })
+ .elems
+ .say
+}
+
+multi sub MAIN (
+ #| Show the solution of part one.
+ Bool:D :$two!,
+) {
+ data()
+ .split("\n\n")
+ .map(*.words)
+ .map({ passport-to-hash($_) })
+ .map({ check-passport-values($_, :strict) })
+ .grep({ is-all-valid($_) })
+ .elems
+ .say
+}
+
+#| Combine a number of passport elements into a single passport Hash.
+sub passport-to-hash (
+ #| All the elements contained in a single passport data string.
+ @elements,
+
+ --> Associative
+) {
+ my %passport;
+
+ for @elements {
+ my ($key, $value) = $_.split(':');
+ %passport{$key} = $value;
+ }
+
+ %passport;
+}
+
+#| Check wether all fields in the passport entry are valid.
+sub is-all-valid (
+ #| A hash representing the passport data.
+ %passport,
+
+ --> Bool
+) {
+ for < byr iyr eyr hgt hcl ecl pid > {
+ return False unless %passport{$_};
+ }
+
+ True;
+}
+
+#| Check each field of the passport for validity. Turns the value of the field
+#| into a Bool, with True representing the field's value was indeed valid.
+sub check-passport-values (
+ %passport is copy,
+
+ Bool:D :$strict = False,
+
+ --> Associative
+) {
+ for < byr iyr eyr hgt hcl ecl pid > {
+ %passport{$_} = is-valid($_, %passport{$_}, :$strict);
+ }
+
+ # CID is ignored.
+ %passport<cid> = True;
+
+ %passport;
+}
+
+multi sub is-valid (
+ 'byr',
+ $value,
+ Bool:D :$strict = False,
+ --> Bool
+) {
+ return False unless $value;
+ return True unless $strict;
+
+ return False unless 1920 ≤ $value ≤ 2002;
+
+ True;
+}
+
+multi sub is-valid (
+ 'iyr',
+ $value,
+ Bool:D :$strict = False,
+ --> Bool
+) {
+ return False unless $value;
+ return True unless $strict;
+
+ return False unless 2010 ≤ $value ≤ 2020;
+
+ True;
+}
+
+multi sub is-valid (
+ 'eyr',
+ $value,
+ Bool:D :$strict = False,
+ --> Bool
+) {
+ return False unless $value;
+ return True unless $strict;
+
+ return False unless 2020 ≤ $value ≤ 2030;
+
+ True;
+}
+
+multi sub is-valid (
+ 'hgt',
+ $value,
+ Bool:D :$strict = False,
+ --> Bool
+) {
+ return False unless $value;
+ return True unless $strict;
+
+ my $match = ($value ~~ / (\d+) ([ 'cm' || 'in' ]) /);
+
+ return False unless $match;
+
+ given ($match[1].Str) {
+ when 'cm' { return False unless 150 ≤ $match[0] ≤ 193 }
+ when 'in' { return False unless 59 ≤ $match[0] ≤ 76 }
+ }
+
+ True;
+}
+
+multi sub is-valid (
+ 'hcl',
+ $value,
+ Bool:D :$strict = False,
+ --> Bool
+) {
+ return False unless $value;
+ return True unless $strict;
+
+ return False unless $value ~~ / '#' <[ \d a..f ]> ** 6 /;
+
+ True;
+}
+
+multi sub is-valid (
+ 'ecl',
+ $value,
+ Bool:D :$strict = False,
+ --> Bool
+) {
+ return False unless $value;
+ return True unless $strict;
+
+ return False unless $value ∈ < amb blu brn gry grn hzl oth >;
+
+ True;
+}
+
+multi sub is-valid (
+ 'pid',
+ $value,
+ Bool:D :$strict = False,
+ --> Bool
+) {
+ return False unless $value;
+ return True unless $strict;
+
+ return False unless $value ~~ / ^ \d ** 9 $ /;
+
+ True;
+}
+
+sub data {
+ q:to/EOF/;
+ byr:1937
+ eyr:2030 pid:154364481
+ hgt:158cm iyr:2015 ecl:brn hcl:#c0946f cid:155
+
+ cid:279
+ eyr:2029
+ pid:675014709 ecl:amb
+ byr:1985 hgt:179in hcl:z iyr:2025
+
+ iyr:2011 hgt:181cm hcl:#341e13 pid:282499883 byr:1953
+ eyr:2023
+ ecl:brn
+
+ eyr:2040 iyr:1984 pid:2371396209 byr:1951 cid:283 hgt:164cm
+ hcl:#623a2f
+
+ iyr:2014 byr:1966 hgt:153cm pid:900693718 eyr:2020 ecl:gry hcl:#866857
+
+ eyr:2020 hgt:162cm
+ byr:1939 pid:900852891 iyr:2020
+ ecl:oth hcl:#b6652a
+
+ iyr:1956
+ hcl:2385ac
+ hgt:167in
+ ecl:#9b82e8
+ eyr:2003
+ cid:214 byr:2012 pid:483285062
+
+ cid:146 byr:1938 hcl:#c0946f pid:136823471
+ hgt:180cm iyr:2011
+ eyr:2020 ecl:gry
+
+ cid:100 hgt:187cm
+ byr:1973 ecl:blu
+ iyr:2020
+ hcl:#888785 eyr:2030
+ pid:386799181
+
+ ecl:#dbba4f
+ hcl:z iyr:2028 pid:193cm
+ byr:2029
+ eyr:1962 hgt:113
+
+ cid:269 byr:1928 pid:604152679
+ iyr:2017 eyr:2027
+ hcl:#c0946f
+ hgt:189cm
+ ecl:blu
+
+ pid:653548437 hcl:z cid:166 iyr:2011 eyr:1967
+ hgt:162 ecl:xry byr:2019
+
+ byr:1979 ecl:hzl iyr:2018 hcl:#7d3b0c
+ eyr:2026
+ pid:981366150 hgt:151cm
+
+ pid:055334062 cid:272 eyr:2025 ecl:grn iyr:2016 hgt:159cm hcl:#a97842 byr:1989
+
+ eyr:2033
+ hgt:170cm ecl:brn pid:#299cf2 hcl:#602927 byr:2004 iyr:2023
+
+ iyr:2020 cid:273
+ pid:038972962
+ hcl:#c0946f hgt:152cm
+ eyr:2021 ecl:blu byr:1986
+
+ pid:015622106 hgt:154cm iyr:2012 byr:1922
+ eyr:2028 hcl:#9dc667 ecl:blu
+
+ iyr:2017 eyr:2025 hgt:179cm cid:324
+ pid:579870519 byr:1934
+
+ hcl:#6b5442 eyr:2021
+ pid:104071480 ecl:brn
+ hgt:162cm cid:89 byr:1949
+ iyr:2017
+
+ pid:388871409 cid:163 hgt:190cm ecl:amb eyr:2022 iyr:2019 byr:1963 hcl:#fffffd
+
+ cid:190 byr:1968 iyr:2018
+ hgt:155cm hcl:#6b5442 ecl:grn
+ pid:891458997 eyr:2030
+
+ hcl:z
+ cid:103 iyr:2026 hgt:171 byr:1979
+ pid:076174078
+ eyr:2031 ecl:#fc4638
+
+ hcl:#f8063e pid:684921958 ecl:gry eyr:2020 iyr:2011
+ byr:1958 hgt:189cm
+ cid:131
+
+ ecl:gry cid:90 iyr:2010 hgt:165cm
+ pid:683095019 byr:1953
+ hcl:#341e13
+ eyr:2030
+
+ pid:000303662
+ ecl:amb iyr:2014 hcl:#733820 byr:1964 hgt:184cm cid:149
+ eyr:2027
+
+ hcl:#341e13 hgt:150cm byr:1999 eyr:2022 pid:950260967 cid:72
+ ecl:grn iyr:2012
+
+ cid:159 byr:1987
+ hcl:#623a2f pid:144877169 eyr:2021 ecl:brn hgt:164cm
+
+ pid:759578668
+ cid:235 ecl:amb hgt:154cm
+ eyr:2023 byr:1941 hcl:#fffffd
+ iyr:2023
+
+ pid:18101245 hcl:z hgt:172in iyr:1947 byr:1956 ecl:grn eyr:1964
+
+ eyr:1980 pid:#8d62b1 ecl:#3e8868 cid:235
+ iyr:1978 hcl:#efcc98
+ byr:2025 hgt:181in
+
+ hgt:64cm hcl:3bc533 iyr:2019 byr:2015 pid:158cm eyr:2027 ecl:#1abbd7
+
+ eyr:2020 iyr:2011
+ pid:739854643 byr:1941 hgt:179cm hcl:#602927 ecl:gry cid:330
+
+ hcl:#a97842 iyr:2011 hgt:167cm pid:527353688 byr:1927 cid:256 eyr:2026 ecl:grn
+
+ iyr:2011 pid:350783151 hgt:168cm
+ byr:1961 ecl:amb hcl:#341e13
+ cid:181
+
+ eyr:2025 hgt:160cm
+ ecl:brn hcl:#cfa07d pid:136929481
+ iyr:2017
+
+ ecl:oth byr:1994 iyr:2020 hgt:162cm pid:578918570 eyr:2027 hcl:#fffffd
+ cid:325
+
+ hgt:63in byr:1925
+ ecl:amb iyr:2014 cid:224
+ hcl:#341e13 pid:208286938
+
+ ecl:#76434f hgt:97
+ hcl:z eyr:1968 pid:#871dc8 iyr:1955
+ byr:2007
+
+ byr:2011
+ eyr:1962 hcl:9ac7b8 pid:6836105558
+ ecl:#d7084f
+ iyr:2023 hgt:76cm
+
+ eyr:2016 iyr:2030 hgt:107 pid:948192703 byr:2013
+ hcl:b80af7 ecl:#d47439
+
+ eyr:2027 iyr:2017
+ pid:#27d2a6 byr:1921 ecl:brn hcl:#c0946f hgt:59in
+
+ byr:1982 hcl:#ceb3a1 ecl:brn eyr:2020 hgt:63in
+ iyr:2017
+
+ ecl:brn hgt:152cm byr:1962
+ iyr:2013
+ pid:381950515 hcl:#2afabd eyr:2020
+
+ hgt:158cm ecl:gry pid:252068098
+ cid:281 eyr:2023 byr:1950 iyr:2016
+ hcl:#ceb3a1
+
+ byr:1922
+ hgt:187cm cid:74
+ hcl:#a97842
+ ecl:amb
+ pid:045338811
+ eyr:2025 iyr:2019
+
+ hgt:176cm eyr:2022 iyr:2019 byr:1938 ecl:blu pid:610286298
+ hcl:#a97842
+
+ iyr:2028 byr:2025
+ eyr:2039 pid:72530856 ecl:#a819ad hgt:69 hcl:z
+
+ iyr:2018 eyr:2030
+ hcl:#8b1e1f ecl:hzl byr:1971
+ pid:189005628
+
+ pid:531154383 eyr:2020 hcl:#733820 ecl:oth
+ hgt:72in
+ iyr:2016
+ byr:1983
+
+ hgt:178cm hcl:#623a2f pid:562756202
+ eyr:2020
+ byr:1929 ecl:oth
+ iyr:2013
+
+ iyr:2013 byr:1983 pid:510998389 ecl:gry
+ cid:99 hcl:#a97842
+
+ ecl:gry eyr:2026
+ cid:202 hgt:191cm byr:1981
+ pid:414853225
+ hcl:#7d3b0c
+
+ hcl:#866857 byr:1951 eyr:2020 hgt:169cm pid:844496997
+ iyr:2016 ecl:brn
+
+ pid:083641628 iyr:2019 eyr:2030
+ byr:1938 ecl:hzl hcl:#b6652a hgt:68in
+
+ hcl:#18171d
+ byr:1981
+ pid:425911593 cid:309 eyr:2026 ecl:brn hgt:168cm
+
+ hcl:c84fda pid:#80d5e6 byr:1925 hgt:162cm iyr:2026
+ eyr:2036 ecl:#62c166
+
+ pid:461660733 eyr:2028
+ hgt:167cm ecl:hzl hcl:#cfa07d iyr:2010
+ cid:183
+
+ eyr:1930 byr:2021 iyr:2016 pid:163cm
+ hcl:79428f cid:136
+ ecl:amb
+
+ hcl:#efcc98 hgt:176cm eyr:2022 ecl:brn iyr:2013 pid:541033681 byr:1952
+
+ hgt:59cm
+ ecl:#d9b0bc pid:#3ab4b4 hcl:7aa29f
+ eyr:2034
+ byr:2011 cid:266 iyr:2004
+
+ byr:1991 hcl:#cfa07d cid:259 hgt:67cm eyr:2024 pid:631601343 ecl:brn iyr:2011
+
+ byr:2020
+ ecl:gry iyr:1944
+ pid:421649652 hgt:107
+ hcl:6d8593 eyr:2026
+
+ ecl:blu
+ byr:1953 hgt:66in hcl:#888785 eyr:2021 pid:174284708
+
+ ecl:#8f2c20
+ pid:27713962 iyr:2010 cid:149 byr:1952 hcl:#866857 eyr:2030
+ hgt:186cm
+
+ eyr:2023 byr:1989 ecl:blu
+ hcl:#18171d pid:480641 iyr:2020
+ hgt:74in
+
+ hcl:#efcc98
+ eyr:2023 hgt:157cm byr:1968
+ iyr:2013
+ ecl:amb pid:436599087
+
+ eyr:2021
+ hgt:175cm hcl:#efcc98 ecl:hzl pid:701245439
+ byr:1943 iyr:2015
+
+ hgt:164cm pid:310546869
+ eyr:2021 hcl:#b6652a ecl:oth iyr:2011 cid:181
+ byr:2001
+
+ byr:2016 hcl:94f4b9 eyr:1922 hgt:155cm ecl:hzl iyr:2009 pid:83440078
+
+ iyr:2014 hgt:60in
+ eyr:2031
+ hcl:#c0946f
+ byr:1948 ecl:grt pid:117909137
+
+ byr:1965 hgt:186cm iyr:2010 cid:117 hcl:#602927 pid:806868279
+ eyr:2029
+ ecl:grn
+
+ ecl:amb hgt:187cm hcl:#c0946f byr:1935
+ cid:139 iyr:2019 eyr:2023
+
+ pid:925865182
+ byr:1952 hgt:158cm hcl:#619e03 ecl:gry eyr:2026
+ iyr:2016
+
+ iyr:2012 hgt:73in
+ cid:199
+ byr:1959
+ ecl:hzl hcl:#fcd2f7 pid:268810283
+
+ eyr:2025
+ pid:317239854 ecl:brn byr:1955 hcl:#fffffd cid:220 hgt:175cm
+ iyr:2015
+
+ ecl:blu
+ byr:1939 hcl:#3332c0
+ iyr:2019 pid:832588457 eyr:2030 hgt:192cm
+
+ hgt:64cm cid:326 ecl:oth byr:2025 eyr:2025 hcl:z iyr:2012 pid:0394683801
+
+ ecl:amb byr:1966
+ pid:734257450 hgt:65in hcl:#fffffd iyr:2018 eyr:2025
+ cid:287
+
+ cid:249
+ eyr:2034 ecl:#7b7bf5 byr:2009 pid:171cm hcl:709fe4
+
+ hcl:d7c488 ecl:#b9bbb2
+ pid:55277333
+ cid:90 byr:2022 iyr:1978
+ hgt:69cm eyr:1981
+
+ hcl:z
+ byr:1949 pid:057966198 eyr:1941
+ iyr:2025
+
+ hgt:168cm ecl:hzl hcl:#866857 iyr:2011 pid:052204052 eyr:2030
+ byr:1970
+
+ pid:318707043 eyr:2029 ecl:hzl hcl:#888785
+ byr:1932 iyr:2010
+ hgt:166cm
+
+ hcl:z iyr:2010 ecl:oth byr:2006 cid:120 pid:#15d5ef eyr:2039 hgt:73cm
+
+ hcl:96c534 hgt:193in eyr:2036 byr:2008 ecl:#090691 cid:109 pid:603339169 iyr:2027
+
+ iyr:2029
+ ecl:utc
+ pid:5845500732 hcl:2a32b8
+ byr:2009 eyr:2040
+ cid:305 hgt:71cm
+
+ byr:1994 iyr:2015
+ eyr:2026
+ hcl:#623a2f pid:678627790
+ hgt:176cm ecl:blu
+
+ byr:2005 hcl:z
+ ecl:zzz pid:#47729a eyr:2039 hgt:62cm iyr:1983
+
+ hcl:#cfa07d ecl:blu
+ iyr:2014 eyr:2025 pid:824483836 hgt:174cm byr:1933
+
+ hgt:70in
+ iyr:2010 cid:53 eyr:2023 pid:093704222 ecl:amb hcl:#a97842 byr:1945
+
+ ecl:brn hcl:#602927 byr:1986 eyr:2029
+ pid:422160398
+ cid:134
+ hgt:156cm
+ iyr:2020
+
+ iyr:2014 hgt:187cm byr:1921 eyr:2022 ecl:amb
+
+ pid:765750572 eyr:2021
+ ecl:hzl
+ iyr:1997 hgt:66
+
+ iyr:2016
+ ecl:blu
+ cid:335
+ hgt:175cm pid:297297703 hcl:#b6652a
+ eyr:2030
+
+ hgt:64in hcl:#866857 pid:159cm byr:1972
+ cid:321 eyr:2021 ecl:brn
+ iyr:2017
+
+ pid:884038003
+ iyr:2016 hgt:188cm ecl:grn
+ byr:1928 eyr:2027 hcl:#341e13
+
+ pid:020315021 hgt:60in ecl:amb iyr:2018
+ hcl:#602927
+ eyr:2028
+ byr:1935
+
+ byr:1946 eyr:2021 hcl:#efcc98 iyr:2015
+ cid:52
+ hgt:177cm
+ pid:841348804
+
+ ecl:gry eyr:2027
+ byr:1959 pid:482204272
+ hcl:#888785
+ iyr:2013
+
+ hcl:#623a2f
+ eyr:2027 iyr:2011 hgt:189cm pid:767923916 ecl:hzl
+ byr:1987
+
+ hgt:152in hcl:#efcc98 ecl:hzl eyr:2030 byr:1971 iyr:1978 pid:499148724
+ cid:194
+
+ pid:#87513f hcl:e2a5de byr:2015 iyr:2016 hgt:155cm eyr:2024
+ ecl:gry cid:123
+
+ byr:1977
+ iyr:2028
+ hcl:#888785 pid:69801913 eyr:2026 hgt:165in ecl:brn
+
+ byr:1938 hcl:#efcc98 hgt:154cm pid:621714851 eyr:1972 ecl:gry iyr:2014 cid:161
+
+ hcl:#a97842
+ hgt:184cm ecl:oth pid:009682326
+ cid:233 eyr:2023 iyr:2019 byr:1982
+
+ hcl:#ceb3a1 pid:700761574 eyr:2020 byr:1940 iyr:2017
+ ecl:gry hgt:76in
+
+ iyr:2017 cid:73
+ ecl:hzl
+ hcl:#efcc98 pid:363441284
+ hgt:177cm byr:1924 eyr:2028
+
+ hcl:#a97842 eyr:2023 byr:1989 pid:589573553
+ ecl:oth
+ iyr:2017 hgt:162cm
+
+ ecl:oth
+ byr:2001 hgt:167cm hcl:#18171d eyr:2028 iyr:2015 pid:253666913
+
+ byr:1943 ecl:amb
+ hcl:#888785 pid:163cm iyr:2025 hgt:76 eyr:2026
+
+ byr:1963 eyr:2030
+ hgt:158in iyr:2023 pid:399153486 hcl:#733820
+
+ pid:43290252 hgt:167cm cid:302 iyr:2016 hcl:f81436
+ byr:1992 ecl:gry
+ eyr:1922
+
+ pid:487300118 hgt:167cm hcl:#888785
+ iyr:2018 ecl:oth cid:286 byr:1971 eyr:2021
+
+ eyr:2036
+ hgt:94
+ byr:2013
+ cid:162 hcl:37408d pid:527721797 ecl:dne
+ iyr:2022
+
+ hcl:5e67df byr:1973 pid:48217944 hgt:65in eyr:2023
+ iyr:2001 ecl:gry
+
+ hcl:717ef8 eyr:1996 pid:154cm ecl:#e2c90e
+ iyr:2028
+ byr:2009 hgt:184cm
+
+ iyr:2015 pid:549968053 hcl:#efcc98
+ hgt:151cm eyr:2025
+ byr:1993
+ ecl:gry
+
+ hgt:165cm ecl:gry
+ iyr:2020
+ byr:1927 hcl:#602927 pid:278946330
+ eyr:2027
+
+ eyr:2031
+ ecl:#b01aae pid:151cm
+ cid:188 iyr:2025
+ hgt:60cm byr:2015
+
+ eyr:2028 pid:928740840
+ byr:1931
+ hgt:191cm iyr:2014 cid:305
+ hcl:#6b5442
+ ecl:oth
+
+ hcl:#7d3b0c cid:283 byr:1923 ecl:amb
+ pid:781290431 iyr:2019
+ eyr:2021
+ hgt:191cm
+
+ byr:2027
+ pid:51702036
+ iyr:2028 hgt:165in ecl:gry hcl:z
+ eyr:2036
+
+ byr:1971
+ ecl:blu iyr:2012 pid:986042111
+ eyr:2021 hcl:#888785
+ hgt:68in
+
+ hgt:183cm byr:2030
+ iyr:2013
+ cid:209 pid:989002507
+ ecl:hzl eyr:2028 hcl:59c2ce
+
+ ecl:gry iyr:2020 pid:895856989 hcl:#888785
+ hgt:185cm byr:1964 eyr:2025
+
+ ecl:gry
+ hgt:183cm cid:97 hcl:#93be9b eyr:2021
+ byr:1995 pid:668647173
+
+ hcl:#733820 eyr:2027
+ byr:1977 pid:242773849 hgt:184cm iyr:2017
+ cid:76 ecl:brn
+
+ hgt:167 hcl:z byr:2012 eyr:2027
+ pid:590438786 ecl:hzl
+ cid:101 iyr:1994
+
+ iyr:2015
+ hcl:#888785 eyr:2024
+ ecl:blu pid:279218875 cid:178 byr:1944 hgt:74in
+
+ ecl:oth cid:334 pid:169599381
+ hcl:#7d3b0c eyr:2028 hgt:172cm iyr:2010
+
+ eyr:2033 byr:1973 cid:333 iyr:2019 hcl:z ecl:utc
+ hgt:178cm pid:#e7abc0
+
+ eyr:2026 ecl:blu cid:264 byr:1998 hgt:177cm hcl:#602927
+ pid:770052780
+ iyr:2019
+
+ ecl:blu
+ iyr:2016 cid:232 eyr:2023
+ pid:643597545 hgt:167cm byr:1986 hcl:#cfa07d
+
+ pid:017818204
+ iyr:2017 eyr:2028 hgt:168cm hcl:#602927 byr:1931 ecl:oth
+
+ byr:1984 ecl:grn hgt:191cm hcl:#efcc98 pid:408382086
+ iyr:2010 eyr:2025
+
+ hgt:158cm ecl:#25e195 byr:1929 pid:0367744553 eyr:1957 iyr:2017
+ hcl:z
+
+ hgt:168cm byr:1977 pid:006609828
+ eyr:2024
+ iyr:2015
+ ecl:amb hcl:#b6652a
+
+ pid:635167847 iyr:2010 hcl:#18171d hgt:163cm ecl:grn
+ eyr:2026
+
+ pid:423029177 byr:1995
+ iyr:2014 ecl:hzl
+ hgt:185cm hcl:#c0946f eyr:2024 cid:230
+
+ pid:#3e3109 ecl:#a8a0aa iyr:2020 hcl:#733820 eyr:2021 byr:2010 hgt:179in
+
+ iyr:2017 byr:1938 eyr:2022 hcl:#733820 ecl:amb hgt:157cm pid:162425330
+
+ hgt:160cm
+ cid:339 byr:1938
+ hcl:#341e13
+ eyr:2025 iyr:2015
+ pid:562755634
+
+ cid:283 byr:1954 ecl:blu hcl:#ceb3a1 hgt:169cm iyr:2013 pid:616439723
+
+ pid:830940520 eyr:2022
+ byr:1981 hgt:193cm hcl:#18171d iyr:2013
+ cid:117
+
+ hcl:#866857 iyr:2019 ecl:hzl byr:1962 hgt:72in eyr:2020
+
+ byr:2015 pid:4530685490 ecl:#c7604e hcl:z
+ hgt:151 eyr:1972 iyr:1948
+
+ pid:0800674852 hcl:z
+ ecl:#2a275e hgt:61cm
+ iyr:1950 eyr:1938
+
+ iyr:2028
+ eyr:1998
+ pid:#c604ca
+ hgt:122 hcl:z
+ ecl:dne cid:160 byr:2018
+
+ hcl:z
+ cid:67 iyr:2029
+ byr:1973
+ ecl:amb eyr:2030
+ hgt:66
+
+ ecl:hzl
+ pid:483557353 eyr:2021
+ hgt:172cm iyr:2011
+ hcl:#888785
+ byr:1963
+
+ eyr:2030 ecl:brn hcl:#fffffd byr:1969
+ hgt:161cm pid:632930895
+ iyr:2017
+
+ iyr:2015 byr:2000
+ pid:525557240 hgt:156cm eyr:2029
+ ecl:brn hcl:#64bf85
+
+ byr:2007
+ iyr:2012 eyr:2029 ecl:#7c1d6f pid:612320497 hgt:165in
+
+ eyr:2026 ecl:grn cid:93
+ hcl:#888785 hgt:134 pid:745552484 iyr:2019 byr:1999
+
+ byr:2001 pid:984678649 hgt:173cm ecl:oth iyr:2012 cid:345 hcl:#fffffd
+ eyr:2028
+
+ hcl:#341e13 pid:308853935
+ byr:1972 hgt:160cm iyr:2012 eyr:2026
+ ecl:amb cid:97
+
+ hcl:z hgt:151
+ ecl:grn pid:132866718
+ iyr:2021 byr:1932
+ eyr:2024
+
+ eyr:2027 byr:1923
+ ecl:oth hgt:174cm hcl:#733820
+ pid:099185839
+ iyr:2017
+
+ iyr:2017 ecl:gry byr:1941
+ hgt:74in
+ pid:540930352
+ hcl:#888785 eyr:2023
+
+ hgt:161cm cid:277
+ hcl:#866857
+ byr:1928
+ eyr:2030 ecl:blu
+ iyr:2020 pid:358953579
+
+ hgt:155cm eyr:1930
+ iyr:2015 ecl:utc
+ pid:163cm
+ byr:2008 hcl:#733820 cid:156
+
+ byr:1946 hgt:164cm
+ cid:234 iyr:2015
+ pid:168804387 eyr:2025
+ ecl:hzl hcl:#a97842
+
+ hgt:184cm
+ hcl:#7d3b0c byr:1996 cid:193 iyr:2011 ecl:amb eyr:2030 pid:940497049
+
+ hcl:#733820 iyr:2016 hgt:168
+ eyr:2020
+ cid:118 pid:9871436 ecl:gry
+
+ pid:416683862
+ hgt:162in
+ hcl:#602927 byr:2027
+ eyr:2027 ecl:gmt
+
+ ecl:#771e11
+ iyr:2024
+ cid:81 pid:741843390
+ hcl:#866857 byr:2012 eyr:1964
+ hgt:157in
+
+ pid:720946735
+ byr:2002 hcl:#18171d iyr:2026 hgt:70cm
+ ecl:brn eyr:2025
+
+ byr:1987 hcl:#623a2f
+ hgt:165cm pid:087526326 ecl:grn
+ iyr:2017 eyr:2021
+
+ byr:2014 hgt:193cm
+ iyr:2018 hcl:z
+ eyr:2027 pid:792398819
+
+ cid:233
+ hcl:z ecl:#18002d hgt:174cm iyr:2027 eyr:1944
+
+ pid:142615460 ecl:blu eyr:2021
+ hcl:#c88693 iyr:2017 cid:182 hgt:152cm byr:1966
+
+ hcl:z hgt:65cm
+ eyr:1944 ecl:dne byr:2029 pid:1066768764
+ iyr:2015
+ cid:149
+
+ hcl:z pid:25144284 hgt:152in
+ byr:2009
+ cid:276 eyr:2037
+ iyr:2010 ecl:gmt
+
+ cid:88 hcl:ed6b8a ecl:xry hgt:178in pid:36832491 byr:2020 iyr:2012 eyr:1993
+
+ byr:1972 iyr:2009 pid:324213657 hgt:160 hcl:z cid:259 eyr:2021 ecl:grn
+
+ hcl:#7d3b0c pid:164496070 eyr:2024 ecl:brn hgt:165cm
+
+ pid:955035528
+ byr:1967 eyr:2021 iyr:2015 hcl:#fffffd hgt:156cm
+ cid:237
+ ecl:blu
+
+ hcl:z
+ eyr:2038 iyr:1973 ecl:grt hgt:193in
+ pid:41385449 byr:2011
+ cid:119
+
+ byr:1934 pid:713339056 hgt:157cm cid:250 iyr:2016 ecl:blu hcl:#866857 eyr:2026
+
+ hgt:186cm byr:2012
+ eyr:2022
+ iyr:2013 hcl:#733820 pid:226693031 ecl:hzl
+
+ cid:118 pid:56750275 hcl:#cfa07d iyr:2028 eyr:2033 byr:1933 hgt:166cm
+
+ byr:1973
+ ecl:hzl hgt:167 hcl:z
+ iyr:2015 pid:70648423
+
+ byr:1929
+ iyr:2012 pid:083005744 ecl:brn hgt:162cm
+ eyr:2024
+ hcl:#cfa07d
+
+ hcl:#623a2f hgt:174cm
+ eyr:2026 iyr:2020
+ ecl:grn
+ byr:1981
+
+ cid:236 byr:1979 iyr:2013 ecl:amb eyr:2030 hcl:#6b5442 pid:768869830
+
+ hcl:#341e13 byr:1998 iyr:2020
+ pid:857980686
+ ecl:hzl hgt:175cm eyr:2028
+
+ hgt:169in
+ cid:305 eyr:2023
+ ecl:gry pid:833031763 hcl:#ceb3a1 iyr:2015 byr:1974
+
+ pid:370671195 hgt:162cm
+ iyr:2018 ecl:oth byr:2001 hcl:#7d3b0c
+ eyr:2021
+
+ eyr:2026
+ ecl:brn
+ cid:288
+ hcl:#866857 iyr:2010 byr:1922
+ pid:309109383
+
+ byr:1949 iyr:2015 pid:832774982 eyr:2029
+ hgt:182cm
+ hcl:#b7144c ecl:amb
+
+ eyr:2029 iyr:2020
+ hcl:#c0946f
+ pid:953788134
+ byr:1954 hgt:167cm
+
+ pid:981508704 eyr:2023 iyr:2013 hgt:66in cid:68 hcl:#fffffd byr:1996 ecl:oth
+
+ iyr:2011 byr:1932 cid:232 eyr:2030
+ hcl:#c0946f
+ hgt:169cm pid:994763987
+ ecl:hzl
+
+ ecl:gmt eyr:2031 hcl:z
+ byr:2006 cid:86 hgt:59cm iyr:1998 pid:#349a7f
+
+ hcl:#7d3b0c iyr:2013 pid:549500594 eyr:2024 byr:1971 ecl:oth
+ hgt:153cm
+
+ iyr:2015
+ byr:1940 pid:798926275 eyr:2027
+ hcl:#cfa07d
+ hgt:158cm ecl:amb
+
+ ecl:brn pid:077141823
+ eyr:1945 iyr:2023 hcl:#602927 byr:1956
+ hgt:152
+
+ iyr:2022
+ byr:2007
+ hcl:f87f81 pid:8404831740 eyr:2033 hgt:170cm
+ ecl:gmt
+
+ iyr:1958
+ ecl:dne hcl:840fbe
+ cid:55 eyr:2032 pid:19403738 hgt:170cm
+ byr:2029
+
+ ecl:brn pid:864743117
+ eyr:2025
+ hgt:188cm byr:1934 hcl:#623a2f
+ iyr:2011
+
+ iyr:2010 pid:877675472 hcl:#7d3b0c eyr:2027 byr:1954 hgt:182cm
+ ecl:oth
+
+ iyr:2015 hcl:#a97842 pid:719192774 ecl:brn
+ byr:1993
+ hgt:186cm
+
+ eyr:2021 hgt:176cm pid:395161956 hcl:#602927
+ ecl:grn iyr:2020 byr:1972
+
+ hcl:#fffffd hgt:167cm byr:1945 ecl:grn iyr:2017 eyr:2026
+
+ hcl:#6b5442 ecl:gry cid:208 hgt:155cm iyr:2010 byr:1933 pid:040244553
+ eyr:2029
+
+ iyr:1960 cid:281 ecl:#8f7c45 hcl:z pid:11609858 eyr:1955 hgt:150in
+ byr:1985
+
+ hgt:150cm byr:2002 hcl:#fffffd
+ pid:337375886 iyr:2011 ecl:amb
+ eyr:2037
+
+ iyr:2014 ecl:oth hgt:155cm hcl:#866857 eyr:2025 pid:614859979 cid:338
+ byr:1952
+
+ hcl:#623a2f hgt:156cm
+ iyr:2010 ecl:amb byr:1997
+ cid:285
+ pid:225568504 eyr:2020
+
+ iyr:2021 hcl:#ceb3a1 ecl:#d6db5a pid:185cm eyr:2020 cid:130 byr:2009
+
+ byr:1956
+ cid:245 iyr:1954 ecl:dne hcl:#341e13 eyr:2040 hgt:71cm pid:838134394
+
+ eyr:2027
+ byr:1994 ecl:amb iyr:2014 hgt:168cm
+ cid:278
+ hcl:#602927 pid:758176176
+
+ hcl:#941519 ecl:gry eyr:2030 byr:1921
+ pid:9477831046
+ iyr:2018 hgt:189cm
+
+ cid:339 hcl:#6b5442
+ byr:1972
+ ecl:oth
+ iyr:2014 hgt:183cm eyr:2020
+
+ cid:165
+ eyr:1926 hcl:#6b5442 iyr:1956 hgt:65cm byr:2029
+ pid:9240052093 ecl:xry
+
+ ecl:grn
+ eyr:2027
+ hcl:#fffffd byr:1975 iyr:2011 hgt:177cm pid:825090410 cid:121
+
+ byr:1934
+ hcl:#733820 pid:133141914 eyr:2027
+ hgt:66in
+ ecl:amb
+ iyr:2010 cid:262
+
+ iyr:1951
+ ecl:#bb9733 hcl:89fcbf
+ byr:2018 pid:#13265f hgt:85
+ eyr:1977
+
+ hcl:#324bed ecl:hzl hgt:155cm
+ iyr:2013 byr:1942 eyr:2021
+ pid:758516520
+
+ ecl:gry
+ pid:#567782 iyr:2015 hcl:276a6d eyr:2028
+ hgt:60cm
+ byr:2005
+
+ hcl:#18171d hgt:191cm eyr:2030
+ ecl:grn pid:748729106 byr:1922 iyr:2017
+
+ byr:1984 hcl:#733820 eyr:2020 iyr:2013 hgt:64in pid:444446114
+ ecl:hzl
+
+ byr:2006 ecl:dne iyr:2029 hcl:z
+ eyr:2023 hgt:68cm
+ pid:131910019
+
+ iyr:1976 hcl:45191a eyr:2017 hgt:68cm
+ ecl:oth pid:153cm byr:1968
+
+ ecl:gry byr:1959 eyr:2023 pid:781945569
+ iyr:2015 hcl:#ceb3a1 hgt:167cm
+
+ hgt:151cm
+ byr:1959 hcl:#7d3b0c
+ cid:76 pid:069205247 ecl:gry eyr:2029
+ iyr:2013
+
+ pid:055193304
+ hcl:#fffffd
+ hgt:67in ecl:grn iyr:2011
+
+ eyr:2026
+ byr:1975
+ pid:681437369
+ hgt:173cm hcl:#a97842
+ iyr:2017 ecl:brn
+
+ pid:298214774 hgt:158cm ecl:hzl
+ hcl:#866857 byr:1993 iyr:2013
+ eyr:2028
+
+ hcl:#b6652a eyr:2023 pid:879418046 hgt:193cm
+ iyr:2014
+ ecl:brn
+
+ hgt:164cm
+ eyr:2028 hcl:fbd462 ecl:gry
+ iyr:2011 byr:1938 pid:029003659
+
+ byr:1999 hgt:171cm eyr:2024 cid:195 pid:041799326 ecl:gry iyr:2012 hcl:#a97842
+
+ byr:1963 pid:7471206322 iyr:2015 ecl:brn hcl:#623a2f hgt:72cm
+ cid:63
+
+ byr:1961
+ ecl:hzl hcl:#efcc98
+ pid:617022365
+ eyr:2020 hgt:155cm iyr:2018
+
+ pid:385763432 byr:1977 cid:228 hcl:#733820 eyr:2020
+ hgt:163cm ecl:grt
+ iyr:2015
+
+ byr:1979 hgt:186in eyr:2037
+ ecl:dne
+ iyr:2025 hcl:d93e3e
+ pid:187cm
+
+ iyr:2018
+ cid:158 eyr:2020
+ byr:1929
+ pid:334374178 hgt:181cm hcl:z ecl:grn
+
+ cid:135 ecl:oth hcl:#623a2f
+ iyr:2017
+ eyr:2024 byr:1940
+ hgt:66in
+
+ cid:92 eyr:2026 hcl:#888785 pid:827526879 byr:1990
+ hgt:186cm ecl:amb iyr:2014
+
+ pid:575519103
+ iyr:2016 byr:1964 hcl:#7d3b0c cid:252 hgt:172cm
+
+ hcl:#c0946f
+ ecl:grn hgt:75in
+ eyr:2021 pid:426544544
+
+ cid:171 byr:2004
+ hcl:z
+ hgt:191cm eyr:2028 pid:#292b3b ecl:brn
+
+ iyr:2016 ecl:hzl
+ byr:2007
+ hgt:167cm hcl:#653b4c cid:124 eyr:2022
+ pid:#27024c
+
+ hgt:177cm byr:2025
+ hcl:z cid:303 iyr:2016 eyr:2000 ecl:dne
+ pid:345555418
+
+ eyr:2040
+ hcl:70fbf6 cid:318
+ byr:2027 iyr:2022
+ ecl:#3a037c pid:644624005
+ hgt:62cm
+
+ ecl:brn iyr:2016 hgt:150cm pid:680594195 cid:324 hcl:#602927
+ byr:1944
+
+ hcl:z eyr:2022 byr:2020 cid:112 ecl:dne iyr:2029
+ pid:#3a3560 hgt:153in
+
+ cid:86
+ ecl:gry byr:1972 hcl:#866857 pid:758976621 hgt:188cm
+
+ pid:#850e8b eyr:2025 hgt:163in
+ ecl:#71e9e2
+ hcl:#623a2f
+
+ ecl:amb byr:1958 hgt:193cm
+ pid:343803154 iyr:2010 eyr:2029 cid:86 hcl:#602927
+
+ hgt:178cm byr:1987 ecl:blu hcl:#866857 iyr:2017
+ pid:222443921 eyr:2027
+
+ byr:1964 iyr:2001
+ hgt:180cm eyr:1945
+ hcl:#fffffd pid:305189916 ecl:#ac3c49
+ cid:142
+
+ byr:1979 hgt:166cm ecl:brn
+ cid:202 hcl:#5311ca eyr:2028 pid:874418818 iyr:2014
+
+ hgt:161cm byr:1987 ecl:grn hcl:#6b5442 pid:986096798
+ cid:74
+ eyr:2027 iyr:2019
+
+ byr:1964 iyr:1979 eyr:2022 ecl:#77ada3
+ hcl:#733820
+ cid:56
+
+ hgt:185cm iyr:2010 pid:214991920 eyr:2023 cid:236 hcl:#866857 ecl:brn byr:1965
+
+ pid:885169578 iyr:2010 byr:1948 ecl:hzl hcl:#18171d
+ eyr:2025 hgt:175cm
+
+ ecl:oth pid:34655368
+ hgt:186
+ byr:1968
+ hcl:2653c9
+ eyr:2030 iyr:2024
+
+ eyr:2022 iyr:2015 ecl:gry hgt:65in byr:1994
+ pid:766704860
+
+ hcl:#c0946f cid:104 iyr:2015
+ pid:739274357
+ ecl:#ef45c8
+ byr:1960 hgt:61in eyr:2026
+
+ pid:849044092 eyr:2020 hgt:186cm iyr:2014
+ byr:1991 hcl:#866857
+
+ hgt:159cm iyr:1950
+ eyr:2021 pid:325442644 hcl:#888785
+ ecl:gry byr:1986
+
+ eyr:2023 hgt:188cm
+ iyr:2014
+ pid:945115479 byr:1979 ecl:blu hcl:#b6652a
+
+ eyr:2024
+ cid:274 pid:390115952 byr:1934 hgt:161cm iyr:2017 hcl:#b95b0d
+
+ ecl:#a16ec8 pid:187cm hcl:z iyr:2029 hgt:170
+ byr:2008
+ EOF
+}