Skip to content

Instantly share code, notes, and snippets.

@michaelsproul
Last active August 29, 2015 14:20
Show Gist options
  • Save michaelsproul/3246846ff1bea71bd049 to your computer and use it in GitHub Desktop.
Save michaelsproul/3246846ff1bea71bd049 to your computer and use it in GitHub Desktop.
Metadata dump for librustc errors (2015-04-28).
{
"E0001": {
"description": "\nThis error suggests that the expression arm corresponding to the noted pattern\nwill never be reached as for all possible values of the expression being\nmatched, one of the preceding patterns will match.\n\nThis means that perhaps some of the preceding patterns are too general, this one\nis too specific or the ordering is incorrect.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 334
}
},
"E0002": {
"description": "\nThis error indicates that an empty match expression is illegal because the type\nit is matching on is non-empty (there exist values of this type). In safe code\nit is impossible to create an instance of an empty type, so empty match\nexpressions are almost never desired. This error is typically fixed by adding\none or more cases to the match expression.\n\nAn example of an empty type is `enum Empty { }`.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 211
}
},
"E0003": {
"description": "\nNot-a-Number (NaN) values cannot be compared for equality and hence can never\nmatch the input to a match expression. To match against NaN values, you should\ninstead use the `is_nan` method in a guard, as in: x if x.is_nan() => ...\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 268
}
},
"E0004": {
"description": "\nThis error indicates that the compiler cannot guarantee a matching pattern for\none or more possible inputs to a match expression. Guaranteed matches are\nrequired in order to assign values to match expressions, or alternatively,\ndetermine the flow of execution.\n\nIf you encounter this error you must alter your patterns so that every possible\nvalue of the input type is matched. For types with a small number of variants\n(like enums) you should probably cover all cases explicitly. Alternatively, the\nunderscore `_` wildcard pattern can be added after all other patterns to match\n\"anything else\".\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 382
}
},
"E0005": {
"description": "\nPatterns used to bind names must be irrefutable, that is, they must guarantee\nthat a name will be extracted in all cases. If you encounter this error you\nprobably need to use a `match` or `if let` to deal with the possibility of\nfailure.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 1014
}
},
"E0006": {
"description": "\nPatterns used to bind names must be irrefutable, that is, they must guarantee\nthat a name will be extracted in all cases. If you encounter this error you\nprobably need to use a `match` or `if let` to deal with the possibility of\nfailure.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 1040
}
},
"E0007": {
"description": "\nThis error indicates that the bindings in a match arm would require a value to\nbe moved into more than one location, thus violating unique ownership. Code like\nthe following is invalid as it requires the entire Option<String> to be moved\ninto a variable called `op_string` while simultaneously requiring the inner\nString to be moved into a variable called `s`.\n\n```\nlet x = Some(\"s\".to_string());\nmatch x {\n op_string @ Some(s) => ...\n None => ...\n}\n```\n\nSee also Error 303.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 1088
}
},
"E0008": {
"description": "\nNames bound in match arms retain their type in pattern guards. As such, if a\nname is bound by move in a pattern, it should also be moved to wherever it is\nreferenced in the pattern guard code. Doing so however would prevent the name\nfrom being available in the body of the match arm. Consider the following:\n\n```\nmatch Some(\"hi\".to_string()) {\n Some(s) if s.len() == 0 => // use s.\n ...\n}\n```\n\nThe variable `s` has type String, and its use in the guard is as a variable of\ntype String. The guard code effectively executes in a separate scope to the body\nof the arm, so the value would be moved into this anonymous scope and therefore\nbecome unavailable in the body of the arm. Although this example seems\ninnocuous, the problem is most clear when considering functions that take their\nargument by value.\n\n```\nmatch Some(\"hi\".to_string()) {\n Some(s) if { drop(s); false } => (),\n Some(s) => // use s.\n ...\n}\n```\n\nThe value would be dropped in the guard then become unavailable not only in the\nbody of that arm but also in all subsequent arms! The solution is to bind by\nreference when using guards or refactor the entire expression, perhaps by\nputting the condition inside the body of the arm.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 1090
}
},
"E0009": {
"description": "\nIn a pattern, all values that don't implement the `Copy` trait have to be bound\nthe same way. The goal here is to avoid binding simultaneously by-move and\nby-ref.\n\nThis limitation may be removed in a future version of Rust.\n\nWrong example:\n\n```\nstruct X { x: (), }\n\nlet x = Some((X { x: () }, X { x: () }));\nmatch x {\n Some((y, ref z)) => {},\n None => panic!()\n}\n```\n\nYou have two solutions:\n1. Bind the pattern's values the same way:\n\n```\nstruct X { x: (), }\n\nlet x = Some((X { x: () }, X { x: () }));\nmatch x {\n Some((ref y, ref z)) => {},\n // or Some((y, z)) => {}\n None => panic!()\n}\n```\n\n2. Implement the `Copy` trait for the X structure (however, please\nkeep in mind that the first solution should be preferred!):\n\n```\n#[derive(Clone, Copy)]\nstruct X { x: (), }\n\nlet x = Some((X { x: () }, X { x: () }));\nmatch x {\n Some((y, ref z)) => {},\n None => panic!()\n}\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 1092
}
},
"E0010": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 407
}
},
"E0011": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 399
}
},
"E0012": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 430
}
},
"E0013": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 464
}
},
"E0014": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 484
}
},
"E0015": {
"description": "\nThe only function calls allowed in static or constant expressions are enum\nvariant constructors or struct constructors (for unit or tuple structs). This\nis because Rust currently does not support compile-time function execution.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 513
}
},
"E0016": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 525
}
},
"E0017": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 354
}
},
"E0018": {
"description": "\nThe value of static and const variables must be known at compile time. You\ncan't cast a pointer as an integer because we can't know what value the\naddress will take.\n\nHowever, pointers to other constants' addresses are allowed in constants,\nexample:\n\n```\nconst X: u32 = 50;\nconst Y: *const u32 = &X;\n```\n\nTherefore, casting one of these non-constant pointers to an integer results\nin a non-constant integer which lead to this error. Example:\n\n```\nconst X: u32 = 50;\nconst Y: *const u32 = &X;\nprintln!(\"{:?}\", Y);\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 438
}
},
"E0019": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 611
}
},
"E0020": {
"description": "\nThis error indicates that an attempt was made to divide by zero (or take the\nremainder of a zero divisor) in a static or constant expression.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_const.rs",
"line": 310
}
},
"E0022": {
"description": null,
"use_site": null
},
"E0079": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/ty.rs",
"line": 5631
}
},
"E0080": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/ty.rs",
"line": 5636
}
},
"E0109": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/astconv_util.rs",
"line": 29
}
},
"E0110": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/astconv_util.rs",
"line": 37
}
},
"E0133": {
"description": "\nUsing unsafe functionality, such as dereferencing raw pointers and calling\nfunctions via FFI or marked as unsafe, is potentially dangerous and disallowed\nby safety checks. As such, those safety checks can be temporarily relaxed by\nwrapping the unsafe instructions inside an `unsafe` block. For instance:\n\nunsafe fn f() { return; }\n\nfn main() {\n unsafe { f(); }\n}\n\nSee also http://doc.rust-lang.org/book/unsafe.html\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/effect.rs",
"line": 51
}
},
"E0134": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/effect.rs",
"line": 73
}
},
"E0135": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/effect.rs",
"line": 77
}
},
"E0136": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/entry.rs",
"line": 89
}
},
"E0137": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/entry.rs",
"line": 103
}
},
"E0138": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/entry.rs",
"line": 112
}
},
"E0139": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/intrinsicck.rs",
"line": 165
}
},
"E0152": {
"description": "\nLang items are already implemented in the standard library. Unless you are\nwriting a free-standing application (e.g. a kernel), you do not need to provide\nthem yourself.\n\nYou can build a free-standing crate by adding `#![no_std]` to the crate\nattributes:\n\n```\n#![feature(no_std)]\n#![no_std]\n```\n\nSee also https://doc.rust-lang.org/book/no-stdlib.html\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/lang_items.rs",
"line": 242
}
},
"E0158": {
"description": "\n`const` and `static` mean different things. A `const` is a compile-time\nconstant, an alias for a literal value. This property means you can match it\ndirectly within a pattern.\n\nThe `static` keyword, on the other hand, guarantees a fixed location in memory.\nThis does not always mean that the value is constant. For example, a global\nmutex can be declared `static` as well.\n\nIf you want to match against a `static`, consider using a guard instead:\n\n```\nstatic FORTY_TWO: i32 = 42;\nmatch Some(42) {\n Some(x) if x == FORTY_TWO => ...\n ...\n}\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 459
}
},
"E0161": {
"description": "\nIn Rust, you can only move a value when its size is known at compile time.\n\nTo work around this restriction, consider \"hiding\" the value behind a reference:\neither `&x` or `&mut x`. Since a reference has a fixed size, this lets you move\nit around as usual.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_rvalues.rs",
"line": 64
}
},
"E0162": {
"description": "\nAn if-let pattern attempts to match the pattern, and enters the body if the\nmatch was succesful. If the match is irrefutable (when it cannot fail to match),\nuse a regular `let`-binding instead. For instance:\n\n```\nstruct Irrefutable(i32);\nlet irr = Irrefutable(0);\n\n// This fails to compile because the match is irrefutable.\nif let Irrefutable(x) = irr {\n // This body will always be executed.\n foo(x);\n}\n\n// Try this instead:\nlet Irrefutable(x) = irr;\nfoo(x);\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 312
}
},
"E0165": {
"description": "\nA while-let pattern attempts to match the pattern, and enters the body if the\nmatch was succesful. If the match is irrefutable (when it cannot fail to match),\nuse a regular `let`-binding inside a `loop` instead. For instance:\n\n```\nstruct Irrefutable(i32);\nlet irr = Irrefutable(0);\n\n// This fails to compile because the match is irrefutable.\nwhile let Irrefutable(x) = irr {\n ...\n}\n\n// Try this instead:\nloop {\n let Irrefutable(x) = irr;\n ...\n}\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 322
}
},
"E0170": {
"description": "\nEnum variants are qualified by default. For example, given this type:\n\n```\nenum Method {\n GET,\n POST\n}\n```\n\nyou would match it using:\n\n```\nmatch m {\n Method::GET => ...\n Method::POST => ...\n}\n```\n\nIf you don't qualify the names, the code will bind new variables named \"GET\" and\n\"POST\" instead. This behavior is likely not what you want, so rustc warns when\nthat happens.\n\nQualified names are good practice, and most code works well with them. But if\nyou prefer them unqualified, you can import the variants into scope:\n\n```\nuse Method::*;\nenum Method { GET, POST }\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 244
}
},
"E0261": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/resolve_lifetime.rs",
"line": 636
}
},
"E0262": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/resolve_lifetime.rs",
"line": 648
}
},
"E0263": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/resolve_lifetime.rs",
"line": 659
}
},
"E0264": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/weak_lang_items.rs",
"line": 121
}
},
"E0265": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_static_recursion.rs",
"line": 86
}
},
"E0266": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_static_recursion.rs",
"line": 106
}
},
"E0267": {
"description": "\nThis error indicates the use of loop keyword (break or continue) inside a\nclosure but outside of any loop. Break and continue can be used as normal\ninside closures as long as they are also contained within a loop. To halt the\nexecution of a closure you should instead use a return statement.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_loop.rs",
"line": 72
}
},
"E0268": {
"description": "\nThis error indicates the use of loop keyword (break or continue) outside of a\nloop. Without a loop to break out of or continue in, no sensible action can be\ntaken.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_loop.rs",
"line": 76
}
},
"E0269": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/liveness.rs",
"line": 1539
}
},
"E0270": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/liveness.rs",
"line": 1556
}
},
"E0271": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 60
}
},
"E0272": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 100
}
},
"E0273": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 111
}
},
"E0274": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 130
}
},
"E0275": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 155
}
},
"E0276": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 175
}
},
"E0277": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 188
}
},
"E0278": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 207
}
},
"E0279": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 217
}
},
"E0280": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 226
}
},
"E0281": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 239
}
},
"E0282": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 291
}
},
"E0283": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 296
}
},
"E0284": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/traits/error_reporting.rs",
"line": 317
}
},
"E0285": {
"description": null,
"use_site": null
},
"E0296": {
"description": "\nThis error indicates that the given recursion limit could not be parsed. Ensure\nthat the value provided is a positive integer between quotes, like so:\n\n```\n#![recursion_limit=\"1000\"]\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/recursion_limit.rs",
"line": 35
}
},
"E0297": {
"description": "\nPatterns used to bind names must be irrefutable. That is, they must guarantee\nthat a name will be extracted in all cases. Instead of pattern matching the\nloop variable, consider using a `match` or `if let` inside the loop body. For\ninstance:\n\n```\n// This fails because `None` is not covered.\nfor Some(x) in xs {\n ...\n}\n\n// Match inside the loop instead:\nfor item in xs {\n match item {\n Some(x) => ...\n None => ...\n }\n}\n\n// Or use `if let`:\nfor item in xs {\n if let Some(x) = item {\n ...\n }\n}\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 376
}
},
"E0298": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 941
}
},
"E0299": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 954
}
},
"E0300": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 993
}
},
"E0301": {
"description": "\nMutable borrows are not allowed in pattern guards, because matching cannot have\nside effects. Side effects could alter the matched object or the environment\non which the match depends in such a way, that the match would not be\nexhaustive. For instance, the following would not match any arm if mutable\nborrows were allowed:\n\n```\nmatch Some(()) {\n None => { },\n option if option.take().is_none() => { /* impossible, option is `Some` */ },\n Some(_) => { } // When the previous match failed, the option became `None`.\n}\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 1154
}
},
"E0302": {
"description": "\nAssignments are not allowed in pattern guards, because matching cannot have\nside effects. Side effects could alter the matched object or the environment\non which the match depends in such a way, that the match would not be\nexhaustive. For instance, the following would not match any arm if assignments\nwere allowed:\n\n```\nmatch Some(()) {\n None => { },\n option if { option = None; false } { },\n Some(_) => { } // When the previous match failed, the option became `None`.\n}\n```\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 1164
}
},
"E0303": {
"description": "\nIn certain cases it is possible for sub-bindings to violate memory safety.\nUpdates to the borrow checker in a future version of Rust may remove this\nrestriction, but for now patterns must be rewritten without sub-bindings.\n\n```\n// Code like this...\nmatch Some(5) {\n ref op_num @ Some(num) => ...\n None => ...\n}\n\n// After.\nmatch Some(\"hi\".to_string()) {\n Some(ref s) => {\n let op_string_ref = &Some(&s);\n ...\n }\n None => ...\n}\n```\n\nThe `op_string_ref` binding has type &Option<&String> in both cases.\n\nSee also https://github.com/rust-lang/rust/issues/14587\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/check_match.rs",
"line": 1186
}
},
"E0304": {
"description": null,
"use_site": null
},
"E0305": {
"description": null,
"use_site": null
},
"E0306": {
"description": "\nIn an array literal `[x; N]`, `N` is the number of elements in the array. This\nnumber cannot be negative.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/ty.rs",
"line": 6004
}
},
"E0307": {
"description": "\nThe length of an array is part of its type. For this reason, this length must be\na compile-time constant.\n",
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/ty.rs",
"line": 6020
}
},
"E0308": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/infer/error_reporting.rs",
"line": 360
}
},
"E0309": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/infer/error_reporting.rs",
"line": 432
}
},
"E0310": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/infer/error_reporting.rs",
"line": 444
}
},
"E0311": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/infer/error_reporting.rs",
"line": 455
}
},
"E0312": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/infer/error_reporting.rs",
"line": 484
}
},
"E0313": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/infer/error_reporting.rs",
"line": 499
}
},
"E0314": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/infer/error_reporting.rs",
"line": 520
}
},
"E0315": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/infer/error_reporting.rs",
"line": 534
}
},
"E0316": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/resolve_lifetime.rs",
"line": 291
}
},
"E0370": {
"description": null,
"use_site": {
"filename": "/home/michael/Programming/rust/src/librustc/middle/ty.rs",
"line": 5579
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment