diff --git a/config/identical-files.json b/config/identical-files.json index 77bee6b5097..c56fbb40f8f 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -454,10 +454,6 @@ "ruby/ql/lib/codeql/ruby/security/internal/SensitiveDataHeuristics.qll", "swift/ql/lib/codeql/swift/security/internal/SensitiveDataHeuristics.qll" ], - "SummaryTypeTracker": [ - "python/ql/lib/semmle/python/dataflow/new/internal/SummaryTypeTracker.qll", - "ruby/ql/lib/codeql/ruby/typetracking/internal/SummaryTypeTracker.qll" - ], "IncompleteUrlSubstringSanitization": [ "javascript/ql/src/Security/CWE-020/IncompleteUrlSubstringSanitization.qll", "ruby/ql/src/queries/security/cwe-020/IncompleteUrlSubstringSanitization.qll" diff --git a/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/attribute_args.ql b/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/attribute_args.ql new file mode 100644 index 00000000000..aeb75aed4a4 --- /dev/null +++ b/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/attribute_args.ql @@ -0,0 +1,17 @@ +class AttributeArg extends @attribute_arg { + string toString() { none() } +} + +class Attribute extends @attribute { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +from AttributeArg arg, int kind, int kind_new, Attribute attr, int index, Location location +where + attribute_args(arg, kind, attr, index, location) and + if arg instanceof @attribute_arg_expr then kind_new = 0 else kind_new = kind +select arg, kind_new, attr, index, location diff --git a/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/old.dbscheme b/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/old.dbscheme new file mode 100644 index 00000000000..d8149ca90e6 --- /dev/null +++ b/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/old.dbscheme @@ -0,0 +1,2238 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/semmlecode.cpp.dbscheme b/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..fc81eb5a3a7 --- /dev/null +++ b/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/semmlecode.cpp.dbscheme @@ -0,0 +1,2233 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/upgrade.properties b/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/upgrade.properties new file mode 100644 index 00000000000..790fcddb636 --- /dev/null +++ b/cpp/downgrades/d8149ca90e695fe26f9a0c5a7fa0edd6d4ea3f5d/upgrade.properties @@ -0,0 +1,4 @@ +description: Support expression attribute arguments +compatibility: partial +attribute_arg_expr.rel: delete +attribute_args.rel: run attribute_args.qlo diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 39e7da98714..1466e7ce645 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.12.2 + +No user-facing changes. + ## 0.12.1 ### New Features diff --git a/cpp/ql/lib/change-notes/2023-12-22-unique-function.md b/cpp/ql/lib/change-notes/2023-12-22-unique-function.md new file mode 100644 index 00000000000..bd5d84132ab --- /dev/null +++ b/cpp/ql/lib/change-notes/2023-12-22-unique-function.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Under certain circumstances a function declaration that is not also a definition could be associated with a `Function` that did not have the definition as a `FunctionDeclarationEntry`. This is now fixed when only one definition exists, and a unique `Function` will exist that has both the declaration and the definition as a `FunctionDeclarationEntry`. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/0.12.2.md b/cpp/ql/lib/change-notes/released/0.12.2.md new file mode 100644 index 00000000000..4b3a79937f7 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.12.2.md @@ -0,0 +1,3 @@ +## 0.12.2 + +No user-facing changes. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 58783ccb26c..8baa46a6150 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.1 +lastReleaseVersion: 0.12.2 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 119831d6471..1a1f2d1c7c7 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.2-dev +version: 0.12.3-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/Element.qll b/cpp/ql/lib/semmle/code/cpp/Element.qll index 79df774d80f..98b5da60c1c 100644 --- a/cpp/ql/lib/semmle/code/cpp/Element.qll +++ b/cpp/ql/lib/semmle/code/cpp/Element.qll @@ -7,6 +7,7 @@ import semmle.code.cpp.Location private import semmle.code.cpp.Enclosing private import semmle.code.cpp.internal.ResolveClass private import semmle.code.cpp.internal.ResolveGlobalVariable +private import semmle.code.cpp.internal.ResolveFunction /** * Get the `Element` that represents this `@element`. @@ -30,11 +31,14 @@ pragma[inline] @element unresolveElement(Element e) { not result instanceof @usertype and not result instanceof @variable and + not result instanceof @function and result = e or e = resolveClass(result) or e = resolveGlobalVariable(result) + or + e = resolveFunction(result) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/Function.qll b/cpp/ql/lib/semmle/code/cpp/Function.qll index db6f1c487e7..92134dca31d 100644 --- a/cpp/ql/lib/semmle/code/cpp/Function.qll +++ b/cpp/ql/lib/semmle/code/cpp/Function.qll @@ -9,6 +9,7 @@ import semmle.code.cpp.exprs.Call import semmle.code.cpp.metrics.MetricFunction import semmle.code.cpp.Linkage private import semmle.code.cpp.internal.ResolveClass +private import semmle.code.cpp.internal.ResolveFunction /** * A C/C++ function [N4140 8.3.5]. Both member functions and non-member @@ -25,6 +26,8 @@ private import semmle.code.cpp.internal.ResolveClass * in more detail in `Declaration.qll`. */ class Function extends Declaration, ControlFlowNode, AccessHolder, @function { + Function() { isFunction(underlyingElement(this)) } + override string getName() { functions(underlyingElement(this), result, _) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/Specifier.qll b/cpp/ql/lib/semmle/code/cpp/Specifier.qll index 19622bbdc56..2f1976d220c 100644 --- a/cpp/ql/lib/semmle/code/cpp/Specifier.qll +++ b/cpp/ql/lib/semmle/code/cpp/Specifier.qll @@ -281,6 +281,11 @@ class AttributeArgument extends Element, @attribute_arg { attribute_arg_constant(underlyingElement(this), unresolveElement(result)) } + /** + * Gets the value of this argument, if its value is an expression. + */ + Expr getValueExpr() { attribute_arg_expr(underlyingElement(this), unresolveElement(result)) } + /** * Gets the attribute to which this is an argument. */ @@ -308,7 +313,10 @@ class AttributeArgument extends Element, @attribute_arg { else if underlyingElement(this) instanceof @attribute_arg_constant_expr then tail = this.getValueConstant().toString() - else tail = this.getValueText() + else + if underlyingElement(this) instanceof @attribute_arg_expr + then tail = this.getValueExpr().toString() + else tail = this.getValueText() ) and result = prefix + tail ) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/internal/ConstantExprs.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/internal/ConstantExprs.qll index dfb5782238b..84e96fa9c46 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/internal/ConstantExprs.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/internal/ConstantExprs.qll @@ -110,8 +110,8 @@ private predicate loopConditionAlwaysUponEntry(ControlFlowNode loop, Expr condit * should be in this relation. */ pragma[noinline] -private predicate isFunction(Element el) { - el instanceof Function +private predicate isFunction(@element el) { + el instanceof @function or el.(Expr).getParent() = el } @@ -122,7 +122,7 @@ private predicate isFunction(Element el) { */ pragma[noopt] private predicate callHasNoTarget(@funbindexpr fc) { - exists(Function f | + exists(@function f | funbind(fc, f) and not isFunction(f) ) diff --git a/cpp/ql/lib/semmle/code/cpp/internal/ResolveFunction.qll b/cpp/ql/lib/semmle/code/cpp/internal/ResolveFunction.qll new file mode 100644 index 00000000000..95cd2806856 --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/internal/ResolveFunction.qll @@ -0,0 +1,57 @@ +private predicate hasDefinition(@function f) { + exists(@fun_decl fd | fun_decls(fd, f, _, _, _) | fun_def(fd)) +} + +private predicate onlyOneCompleteFunctionExistsWithMangledName(@mangledname name) { + strictcount(@function f | hasDefinition(f) and mangled_name(f, name)) = 1 +} + +/** Holds if `f` is a unique function with a definition named `name`. */ +private predicate isFunctionWithMangledNameAndWithDefinition(@mangledname name, @function f) { + hasDefinition(f) and + mangled_name(f, name) and + onlyOneCompleteFunctionExistsWithMangledName(name) +} + +/** Holds if `f` is a function without a definition named `name`. */ +private predicate isFunctionWithMangledNameAndWithoutDefinition(@mangledname name, @function f) { + not hasDefinition(f) and + mangled_name(f, name) +} + +/** + * Holds if `incomplete` is a function without a definition, and there exists + * a unique function `complete` with the same name that does have a definition. + */ +private predicate hasTwinWithDefinition(@function incomplete, @function complete) { + not function_instantiation(incomplete, complete) and + ( + not compgenerated(incomplete) or + not compgenerated(complete) + ) and + exists(@mangledname name | + isFunctionWithMangledNameAndWithoutDefinition(name, incomplete) and + isFunctionWithMangledNameAndWithDefinition(name, complete) + ) +} + +import Cached + +cached +private module Cached { + /** + * If `f` is a function without a definition, and there exists a unique + * function with the same name that does have a definition, then the + * result is that unique function. Otherwise, the result is `f`. + */ + cached + @function resolveFunction(@function f) { + hasTwinWithDefinition(f, result) + or + not hasTwinWithDefinition(f, _) and + result = f + } + + cached + predicate isFunction(@function f) { f = resolveFunction(_) } +} diff --git a/cpp/ql/lib/semmle/code/cpp/internal/ResolveGlobalVariable.qll b/cpp/ql/lib/semmle/code/cpp/internal/ResolveGlobalVariable.qll index c11e1457dae..3727a1aaa00 100644 --- a/cpp/ql/lib/semmle/code/cpp/internal/ResolveGlobalVariable.qll +++ b/cpp/ql/lib/semmle/code/cpp/internal/ResolveGlobalVariable.qll @@ -24,8 +24,8 @@ private predicate isGlobalWithMangledNameAndWithoutDefinition(@mangledname name, * a unique global variable `complete` with the same name that does have a definition. */ private predicate hasTwinWithDefinition(@globalvariable incomplete, @globalvariable complete) { + not variable_instantiation(incomplete, complete) and exists(@mangledname name | - not variable_instantiation(incomplete, complete) and isGlobalWithMangledNameAndWithoutDefinition(name, incomplete) and isGlobalWithMangledNameAndWithDefinition(name, complete) ) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 8c66aad6680..19140653877 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -59,6 +59,41 @@ private module Cached { import Cached private import Nodes0 +/** + * A module for calculating the number of stars (i.e., `*`s) needed for various + * dataflow node `toString` predicates. + */ +module NodeStars { + private int getNumberOfIndirections(Node n) { + result = n.(RawIndirectOperand).getIndirectionIndex() + or + result = n.(RawIndirectInstruction).getIndirectionIndex() + or + result = n.(VariableNode).getIndirectionIndex() + or + result = n.(PostUpdateNodeImpl).getIndirectionIndex() + or + result = n.(FinalParameterNode).getIndirectionIndex() + } + + private int maxNumberOfIndirections() { result = max(getNumberOfIndirections(_)) } + + private string repeatStars(int n) { + n = 0 and result = "" + or + n = [1 .. maxNumberOfIndirections()] and + result = "*" + repeatStars(n - 1) + } + + /** + * Gets the number of stars (i.e., `*`s) needed to produce the `toString` + * output for `n`. + */ + string stars(Node n) { result = repeatStars(getNumberOfIndirections(n)) } +} + +import NodeStars + class Node0Impl extends TIRDataFlowNode0 { /** * INTERNAL: Do not use. diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 4e8acfe8187..ab1e3365aa8 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -486,47 +486,6 @@ class Node extends TIRDataFlowNode { } } -private string toExprString(Node n) { - not isDebugMode() and - ( - result = n.asExpr(0).toString() - or - not exists(n.asExpr()) and - result = stars(n) + n.asIndirectExpr(0, 1).toString() - ) -} - -private module NodeStars { - private int getNumberOfIndirections(Node n) { - result = n.(RawIndirectOperand).getIndirectionIndex() - or - result = n.(RawIndirectInstruction).getIndirectionIndex() - or - result = n.(VariableNode).getIndirectionIndex() - or - result = n.(PostUpdateNodeImpl).getIndirectionIndex() - or - result = n.(FinalParameterNode).getIndirectionIndex() - } - - private int maxNumberOfIndirections() { result = max(getNumberOfIndirections(_)) } - - private string repeatStars(int n) { - n = 0 and result = "" - or - n = [1 .. maxNumberOfIndirections()] and - result = "*" + repeatStars(n - 1) - } - - /** - * Gets the number of stars (i.e., `*`s) needed to produce the `toString` - * output for `n`. - */ - string stars(Node n) { result = repeatStars(getNumberOfIndirections(n)) } -} - -private import NodeStars - /** * A class that lifts pre-SSA dataflow nodes to regular dataflow nodes. */ @@ -589,7 +548,10 @@ Type stripPointer(Type t) { result = t.(FunctionPointerIshType).getBaseType() } -private class PostUpdateNodeImpl extends PartialDefinitionNode, TPostUpdateNodeImpl { +/** + * INTERNAL: Do not use. + */ +class PostUpdateNodeImpl extends PartialDefinitionNode, TPostUpdateNodeImpl { int indirectionIndex; Operand operand; @@ -997,7 +959,8 @@ private Type getTypeImpl0(Type t, int indirectionIndex) { * * If `indirectionIndex` cannot be stripped off `t`, an `UnknownType` is returned. */ -bindingset[indirectionIndex] +bindingset[t, indirectionIndex] +pragma[inline_late] Type getTypeImpl(Type t, int indirectionIndex) { result = getTypeImpl0(t, indirectionIndex) or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DebugPrinting.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DebugPrinting.qll index 1c958cf78d6..7c2bf25aab5 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DebugPrinting.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DebugPrinting.qll @@ -1,9 +1,24 @@ /** - * This file activates debugging mode for dataflow node printing. + * This file contains the class that implements the _debug_ version of + * `toString` for `Instruction` and `Operand` dataflow nodes. */ +private import semmle.code.cpp.ir.IR +private import codeql.util.Unit private import Node0ToString +private import DataFlowUtil private class DebugNode0ToString extends Node0ToString { - final override predicate isDebugMode() { any() } + DebugNode0ToString() { + // Silence warning about `this` not being bound. + exists(this) + } + + override string instructionToString(Instruction i) { result = i.getDumpString() } + + override string operandToString(Operand op) { + result = op.getDumpString() + " @ " + op.getUse().getResultId() + } + + override string toExprString(Node n) { none() } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/Node0ToString.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/Node0ToString.qll index a271e93355a..6d1d6c7ab5c 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/Node0ToString.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/Node0ToString.qll @@ -1,75 +1,53 @@ /** - * This file contains the abstract class that serves as the base class for - * dataflow node printing. + * This file imports the class that is used to construct the strings used by + * `Node.ToString`. * - * By default, a non-debug string is produced. However, a debug-friendly - * string can be produced by importing `DebugPrinting.qll`. + * Normally, this file should just import `NormalNode0ToString` to compute the + * efficient `toString`, but for debugging purposes one can import + * `DebugPrinting.qll` to better correlate the dataflow nodes with their + * underlying instructions and operands. */ private import semmle.code.cpp.ir.IR private import codeql.util.Unit +private import DataFlowUtil +import NormalNode0ToString // Change this import to control which version should be used. -/** - * A class to control whether a debugging version of instructions and operands - * should be printed as part of the `toString` output of dataflow nodes. - * - * To enable debug printing import the `DebugPrinting.ql` file. By default, - * non-debug output will be used. - */ -class Node0ToString extends Unit { - abstract predicate isDebugMode(); - - private string normalInstructionToString(Instruction i) { - not this.isDebugMode() and - if i.(InitializeParameterInstruction).getIRVariable() instanceof IRThisVariable - then result = "this" - else result = i.getAst().toString() - } - - private string normalOperandToString(Operand op) { - not this.isDebugMode() and - if op.getDef().(InitializeParameterInstruction).getIRVariable() instanceof IRThisVariable - then result = "this" - else result = op.getDef().getAst().toString() - } +/** An abstract class to control the behavior of `Node.toString`. */ +abstract class Node0ToString extends Unit { + /** + * Gets the string that should be used by `OperandNode.toString` to print the + * dataflow node whose underlying operand is `op.` + */ + abstract string operandToString(Operand op); /** - * Gets the string that should be used by `InstructionNode.toString` + * Gets the string that should be used by `InstructionNode.toString` to print + * the dataflow node whose underlying instruction is `instr`. */ - string instructionToString(Instruction i) { - if this.isDebugMode() - then result = i.getDumpString() - else result = this.normalInstructionToString(i) - } + abstract string instructionToString(Instruction i); /** - * Gets the string that should be used by `OperandNode.toString`. + * Gets the string representation of the `Expr` associated with `n`, if any. */ - string operandToString(Operand op) { - if this.isDebugMode() - then result = op.getDumpString() + " @ " + op.getUse().getResultId() - else result = this.normalOperandToString(op) - } -} - -private class NoDebugNode0ToString extends Node0ToString { - final override predicate isDebugMode() { none() } + abstract string toExprString(Node n); } /** - * Gets the string that should be used by `OperandNode.toString`. + * Gets the string that should be used by `OperandNode.toString` to print the + * dataflow node whose underlying operand is `op.` */ -string operandToString(Operand op) { result = any(Node0ToString nts).operandToString(op) } +string operandToString(Operand op) { result = any(Node0ToString s).operandToString(op) } /** - * Gets the string that should be used by `InstructionNode.toString` + * Gets the string that should be used by `InstructionNode.toString` to print + * the dataflow node whose underlying instruction is `instr`. */ -string instructionToString(Instruction i) { result = any(Node0ToString nts).instructionToString(i) } +string instructionToString(Instruction instr) { + result = any(Node0ToString s).instructionToString(instr) +} /** - * Holds if debugging mode is enabled. - * - * In debug mode the `toString` on dataflow nodes is more expensive to compute, - * but gives more precise information about the different dataflow nodes. + * Gets the string representation of the `Expr` associated with `n`, if any. */ -predicate isDebugMode() { any(Node0ToString nts).isDebugMode() } +string toExprString(Node n) { result = any(Node0ToString s).toExprString(n) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/NormalNode0ToString.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/NormalNode0ToString.qll new file mode 100644 index 00000000000..ef2681104cb --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/NormalNode0ToString.qll @@ -0,0 +1,36 @@ +/** + * This file contains the class that implements the non-debug version of + * `toString` for `Instruction` and `Operand` dataflow nodes. + */ + +private import semmle.code.cpp.ir.IR +private import codeql.util.Unit +private import Node0ToString +private import DataFlowUtil +private import DataFlowPrivate + +private class NormalNode0ToString extends Node0ToString { + NormalNode0ToString() { + // Silence warning about `this` not being bound. + exists(this) + } + + override string instructionToString(Instruction i) { + if i.(InitializeParameterInstruction).getIRVariable() instanceof IRThisVariable + then result = "this" + else result = i.getAst().toString() + } + + override string operandToString(Operand op) { + if op.getDef().(InitializeParameterInstruction).getIRVariable() instanceof IRThisVariable + then result = "this" + else result = op.getDef().getAst().toString() + } + + override string toExprString(Node n) { + result = n.asExpr(0).toString() + or + not exists(n.asExpr()) and + result = stars(n) + n.asIndirectExpr(0, 1).toString() + } +} diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRLocalFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRLocalFlow.qll index b7f01fc1bcc..9a9608db2b2 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRLocalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRLocalFlow.qll @@ -1,6 +1,7 @@ private import cpp private import semmle.code.cpp.ir.IR private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil +private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate private import SsaInternals as Ssa private import PrintIRUtilities @@ -33,9 +34,9 @@ private string getNodeProperty(Node node, string key) { key = "flow" and result = strictconcat(string flow, boolean to, int order1, int order2 | - flow = getFromFlow(node, order1, order2) + "->" + starsForNode(node) + "@" and to = false + flow = getFromFlow(node, order1, order2) + "->" + stars(node) + "@" and to = false or - flow = starsForNode(node) + "@->" + getToFlow(node, order1, order2) and to = true + flow = stars(node) + "@->" + getToFlow(node, order1, order2) and to = true | flow, ", " order by to, order1, order2, flow ) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRUtilities.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRUtilities.qll index 5cca78588f0..5dfe53c946b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRUtilities.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRUtilities.qll @@ -7,37 +7,14 @@ private import semmle.code.cpp.ir.IR private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate -private string stars(int k) { - k = - [0 .. max([ - any(RawIndirectInstruction n).getIndirectionIndex(), - any(RawIndirectOperand n).getIndirectionIndex() - ] - )] and - (if k = 0 then result = "" else result = "*" + stars(k - 1)) -} - -string starsForNode(Node node) { - exists(int indirectionIndex | - node.(IndirectInstruction).hasInstructionAndIndirectionIndex(_, indirectionIndex) or - node.(IndirectOperand).hasOperandAndIndirectionIndex(_, indirectionIndex) - | - result = stars(indirectionIndex) - ) - or - not node instanceof IndirectInstruction and - not node instanceof IndirectOperand and - result = "" -} - private Instruction getInstruction(Node n, string stars) { result = [n.asInstruction(), n.(RawIndirectInstruction).getInstruction()] and - stars = starsForNode(n) + stars = stars(n) } private Operand getOperand(Node n, string stars) { result = [n.asOperand(), n.(RawIndirectOperand).getOperand()] and - stars = starsForNode(n) + stars = stars(n) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 5c0174be32d..11bebd975f0 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll @@ -16,6 +16,15 @@ private module SourceVariables { ind = [0 .. countIndirectionsForCppType(base.getLanguageType()) + 1] } + private int maxNumberOfIndirections() { result = max(SourceVariable sv | | sv.getIndirection()) } + + private string repeatStars(int n) { + n = 0 and result = "" + or + n = [1 .. maxNumberOfIndirections()] and + result = "*" + repeatStars(n - 1) + } + class SourceVariable extends TSourceVariable { SsaInternals0::SourceVariable base; int ind; @@ -32,13 +41,7 @@ private module SourceVariables { SsaInternals0::SourceVariable getBaseVariable() { result = base } /** Gets a textual representation of this element. */ - string toString() { - ind = 0 and - result = this.getBaseVariable().toString() - or - ind > 0 and - result = this.getBaseVariable().toString() + " indirection" - } + string toString() { result = repeatStars(this.getIndirection()) + base.toString() } /** * Gets the number of loads performed on the base source variable diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll index ce3a5fbccd3..e349367fed4 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll @@ -418,6 +418,11 @@ class BaseCallVariable extends AbstractBaseSourceVariable, TBaseCallVariable { } private module IsModifiableAtImpl { + pragma[nomagic] + private predicate isUnderlyingIndirectionType(Type t) { + t = any(Indirection ind).getUnderlyingType() + } + /** * Holds if the `indirectionIndex`'th dereference of a value of type * `cppType` is a type that can be modified (either by modifying the value @@ -445,10 +450,9 @@ private module IsModifiableAtImpl { bindingset[cppType, indirectionIndex] pragma[inline_late] private predicate impl(CppType cppType, int indirectionIndex) { - exists(Type pointerType, Type base, Type t | - pointerType = t.getUnderlyingType() and - pointerType = any(Indirection ind).getUnderlyingType() and - cppType.hasType(t, _) and + exists(Type pointerType, Type base | + isUnderlyingIndirectionType(pointerType) and + cppType.hasUnderlyingType(pointerType, _) and base = getTypeImpl(pointerType, indirectionIndex) | // The value cannot be modified if it has a const specifier, diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/CppType.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/CppType.qll index 315db83a5cc..c1d97d36360 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/CppType.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/CppType.qll @@ -227,7 +227,7 @@ class CppType extends TCppType { predicate hasType(Type type, boolean isGLValue) { none() } /** - * Holds if this type represents the C++ type `type`. If `isGLValue` is `true`, then this type + * Holds if this type represents the C++ unspecified type `type`. If `isGLValue` is `true`, then this type * represents a glvalue of type `type`. Otherwise, it represents a prvalue of type `type`. */ final predicate hasUnspecifiedType(Type type, boolean isGLValue) { @@ -236,6 +236,18 @@ class CppType extends TCppType { type = specifiedType.getUnspecifiedType() ) } + + /** + * Holds if this type represents the C++ type `type` (after resolving + * typedefs). If `isGLValue` is `true`, then this type represents a glvalue + * of type `type`. Otherwise, it represents a prvalue of type `type`. + */ + final predicate hasUnderlyingType(Type type, boolean isGLValue) { + exists(Type typedefType | + this.hasType(typedefType, isGLValue) and + type = typedefType.getUnderlyingType() + ) + } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FormattingFunction.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FormattingFunction.qll index 66f0a1dae01..7c1ea723193 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FormattingFunction.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FormattingFunction.qll @@ -9,8 +9,9 @@ import semmle.code.cpp.models.interfaces.ArrayFunction import semmle.code.cpp.models.interfaces.Taint +pragma[nomagic] private Type stripTopLevelSpecifiersOnly(Type t) { - result = stripTopLevelSpecifiersOnly(t.(SpecifiedType).getBaseType()) + result = stripTopLevelSpecifiersOnly(pragma[only_bind_out](t.(SpecifiedType).getBaseType())) or result = t and not t instanceof SpecifiedType diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index fc81eb5a3a7..d8149ca90e6 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -937,6 +937,7 @@ case @attribute_arg.kind of | 2 = @attribute_arg_constant | 3 = @attribute_arg_type | 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr ; attribute_arg_value( @@ -951,6 +952,10 @@ attribute_arg_constant( unique int arg: @attribute_arg ref, int constant: @expr ref ) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) attribute_arg_name( unique int arg: @attribute_arg ref, string name: string ref diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 35ffe97c708..7209e4609b0 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -24,14 +24,14 @@ @location_stmt 3814079 - - @location_expr - 13167909 - @diagnostic 5200 + + @location_expr + 13167909 + @file 122996 @@ -66,7 +66,7 @@ @namespace_decl - 308610 + 311770 @using @@ -74,7 +74,7 @@ @static_assert - 133393 + 134759 @parameter @@ -390,11 +390,11 @@ @stdattribute - 491320 + 492230 @declspec - 243362 + 243349 @msattribute @@ -424,6 +424,10 @@ @attribute_arg_type 465 + + @attribute_arg_expr + 1 + @derivation 395653 @@ -434,7 +438,7 @@ @comment - 8761469 + 8756423 @namespace @@ -454,111 +458,7 @@ @initialiser - 1698635 - - - @lambdacapture - 27953 - - - @stmt_expr - 1483766 - - - @stmt_if - 724811 - - - @stmt_while - 29372 - - - @stmt_goto - 110523 - - - @stmt_label - 53061 - - - @stmt_return - 1283543 - - - @stmt_block - 1422380 - - - @stmt_end_test_while - 148648 - - - @stmt_for - 61463 - - - @stmt_switch_case - 209381 - - - @stmt_switch - 20755 - - - @stmt_asm - 109816 - - - @stmt_decl - 592150 - - - @stmt_empty - 193307 - - - @stmt_continue - 22528 - - - @stmt_break - 102247 - - - @stmt_try_block - 46863 - - - @stmt_microsoft_try - 163 - - - @stmt_set_vla_size - 26 - - - @stmt_vla_decl - 22 - - - @stmt_assigned_goto - 9061 - - - @stmt_range_based_for - 8386 - - - @stmt_handler - 65232 - - - @stmt_constexpr_if - 52432 - - - @stmt_co_return - 2 + 1711579 @address_of @@ -642,7 +542,7 @@ @pdiffexpr - 35407 + 35375 @lshiftexpr @@ -750,7 +650,7 @@ @commaexpr - 123874 + 123762 @subscriptexpr @@ -762,7 +662,7 @@ @vastartexpr - 3703 + 3741 @vaargexpr @@ -842,7 +742,7 @@ @assume - 3200 + 3233 @conjugation @@ -894,7 +794,7 @@ @thisaccess - 1126162 + 1118111 @new_expr @@ -970,11 +870,11 @@ @isbaseofexpr - 150 + 152 @isclassexpr - 1836 + 1854 @isconvtoexpr @@ -986,7 +886,7 @@ @isenumexpr - 522 + 521 @ispodexpr @@ -1010,7 +910,7 @@ @uuidof - 20103 + 20309 @delete_array_expr @@ -1018,7 +918,7 @@ @new_array_expr - 5099 + 5101 @foldexpr @@ -1058,11 +958,11 @@ @reinterpret_cast - 30707 + 30992 @const_cast - 35198 + 35271 @dynamic_cast @@ -1078,11 +978,11 @@ @noopexpr - 37 + 38 @istriviallyconstructibleexpr - 1357 + 1356 @isdestructibleexpr @@ -1094,7 +994,7 @@ @istriviallydestructibleexpr - 835 + 834 @istriviallyassignableexpr @@ -1102,7 +1002,7 @@ @isnothrowassignableexpr - 4177 + 4174 @istrivialexpr @@ -1138,7 +1038,7 @@ @isnothrowconstructibleexpr - 14413 + 14400 @hasfinalizerexpr @@ -1348,6 +1248,110 @@ @isvolatile 2 + + @lambdacapture + 27953 + + + @stmt_expr + 1483766 + + + @stmt_if + 724811 + + + @stmt_while + 29372 + + + @stmt_goto + 110523 + + + @stmt_label + 53061 + + + @stmt_return + 1283543 + + + @stmt_block + 1422380 + + + @stmt_end_test_while + 148648 + + + @stmt_for + 61463 + + + @stmt_switch_case + 209381 + + + @stmt_switch + 20755 + + + @stmt_asm + 109816 + + + @stmt_decl + 592150 + + + @stmt_empty + 193307 + + + @stmt_continue + 22528 + + + @stmt_break + 103275 + + + @stmt_try_block + 46863 + + + @stmt_microsoft_try + 165 + + + @stmt_set_vla_size + 26 + + + @stmt_vla_decl + 22 + + + @stmt_assigned_goto + 9061 + + + @stmt_range_based_for + 8386 + + + @stmt_handler + 65232 + + + @stmt_constexpr_if + 52384 + + + @stmt_co_return + 2 + @ppd_if 665765 @@ -1378,7 +1382,7 @@ @ppd_define - 2429760 + 2427864 @ppd_undef @@ -1394,11 +1398,11 @@ @ppd_error - 44 + 104 @ppd_pragma - 311566 + 314309 @ppd_objc_import @@ -1410,7 +1414,7 @@ @link_target - 1475 + 850 @xmldtd @@ -2036,7 +2040,7 @@ seconds - 14600 + 14560 @@ -2125,7 +2129,7 @@ 718 - 6 + 5 9 159 @@ -2137,27 +2141,32 @@ 10 11 - 159 + 119 11 - 15 + 13 159 - 16 - 19 + 14 + 17 + 79 + + + 18 + 21 159 - 20 - 26 + 21 + 45 159 - 45 - 134 - 119 + 56 + 116 + 79 @@ -2222,10 +2231,15 @@ 12 + + 2 + 3 + 39 + 3 4 - 638 + 598 4 @@ -2235,12 +2249,12 @@ 5 6 - 159 + 239 6 7 - 319 + 239 7 @@ -2259,12 +2273,12 @@ 11 - 27 + 28 279 - 29 - 100 + 28 + 95 199 @@ -2311,8 +2325,8 @@ 12 - 4 - 5 + 3 + 4 39 @@ -2326,8 +2340,8 @@ 39 - 190 - 191 + 186 + 187 39 @@ -2344,22 +2358,22 @@ 1 2 - 10012 + 10252 2 3 - 3071 + 3111 3 - 4 - 1037 + 16 + 1116 - 4 - 44 - 478 + 41 + 46 + 79 @@ -2375,12 +2389,12 @@ 1 2 - 9414 + 9015 2 3 - 3071 + 3630 3 @@ -2389,8 +2403,8 @@ 4 - 75 - 797 + 74 + 598 @@ -2406,12 +2420,12 @@ 1 2 - 14241 + 14360 2 4 - 359 + 199 @@ -2755,7 +2769,7 @@ cpu_seconds - 7140 + 7286 elapsed_seconds @@ -2805,17 +2819,17 @@ 1 2 - 5667 + 5971 2 3 - 1023 + 854 3 - 14 - 449 + 16 + 461 @@ -2831,12 +2845,12 @@ 1 2 - 6522 + 6825 2 3 - 618 + 461 @@ -2860,8 +2874,13 @@ 33 - 7 - 8 + 9 + 10 + 11 + + + 10 + 11 11 @@ -2869,34 +2888,29 @@ 12 11 - - 12 - 13 - 11 - 21 22 11 - 120 - 121 + 112 + 113 11 - 180 - 181 + 174 + 175 11 - 243 - 244 + 253 + 254 11 - 262 - 263 + 266 + 267 11 @@ -2921,8 +2935,13 @@ 33 - 7 - 8 + 9 + 10 + 11 + + + 10 + 11 11 @@ -2930,34 +2949,29 @@ 12 11 - - 12 - 13 - 11 - 21 22 11 - 114 - 115 + 103 + 104 11 - 133 - 134 + 125 + 126 11 - 167 - 168 + 160 + 161 11 - 218 - 219 + 243 + 244 11 @@ -14078,11 +14092,11 @@ purefunctions - 99971 + 100995 id - 99971 + 100995 @@ -14971,15 +14985,15 @@ fun_decl_noexcept - 61101 + 61046 fun_decl - 61101 + 61046 constant - 60997 + 60941 @@ -14993,7 +15007,7 @@ 1 2 - 61101 + 61046 @@ -15009,7 +15023,7 @@ 1 2 - 60892 + 60837 2 @@ -16225,23 +16239,23 @@ namespace_decls - 308610 + 311770 id - 308610 + 311770 namespace_id - 1414 + 1429 location - 308610 + 311770 bodylocation - 308610 + 311770 @@ -16255,7 +16269,7 @@ 1 2 - 308610 + 311770 @@ -16271,7 +16285,7 @@ 1 2 - 308610 + 311770 @@ -16287,7 +16301,7 @@ 1 2 - 308610 + 311770 @@ -16303,57 +16317,57 @@ 1 2 - 289 + 292 2 3 - 157 + 158 3 5 - 100 + 101 5 11 - 113 + 114 11 28 - 106 + 107 28 51 - 119 + 120 53 69 - 106 + 107 69 113 - 106 + 107 123 185 - 106 + 107 186 363 - 106 + 107 406 12195 - 100 + 101 @@ -16369,57 +16383,57 @@ 1 2 - 289 + 292 2 3 - 157 + 158 3 5 - 100 + 101 5 11 - 113 + 114 11 28 - 106 + 107 28 51 - 119 + 120 53 69 - 106 + 107 69 113 - 106 + 107 123 185 - 106 + 107 186 363 - 106 + 107 406 12195 - 100 + 101 @@ -16435,57 +16449,57 @@ 1 2 - 289 + 292 2 3 - 157 + 158 3 5 - 100 + 101 5 11 - 113 + 114 11 28 - 106 + 107 28 51 - 119 + 120 53 69 - 106 + 107 69 113 - 106 + 107 123 185 - 106 + 107 186 363 - 106 + 107 406 12195 - 100 + 101 @@ -16501,7 +16515,7 @@ 1 2 - 308610 + 311770 @@ -16517,7 +16531,7 @@ 1 2 - 308610 + 311770 @@ -16533,7 +16547,7 @@ 1 2 - 308610 + 311770 @@ -16549,7 +16563,7 @@ 1 2 - 308610 + 311770 @@ -16565,7 +16579,7 @@ 1 2 - 308610 + 311770 @@ -16581,7 +16595,7 @@ 1 2 - 308610 + 311770 @@ -16860,27 +16874,27 @@ static_asserts - 133393 + 134759 id - 133393 + 134759 condition - 133393 + 134759 message - 29938 + 30245 location - 17399 + 17577 enclosing - 4603 + 4650 @@ -16894,7 +16908,7 @@ 1 2 - 133393 + 134759 @@ -16910,7 +16924,7 @@ 1 2 - 133393 + 134759 @@ -16926,7 +16940,7 @@ 1 2 - 133393 + 134759 @@ -16942,7 +16956,7 @@ 1 2 - 133393 + 134759 @@ -16958,7 +16972,7 @@ 1 2 - 133393 + 134759 @@ -16974,7 +16988,7 @@ 1 2 - 133393 + 134759 @@ -16990,7 +17004,7 @@ 1 2 - 133393 + 134759 @@ -17006,7 +17020,7 @@ 1 2 - 133393 + 134759 @@ -17022,32 +17036,32 @@ 1 2 - 22027 + 22253 2 3 - 471 + 476 3 4 - 2848 + 2877 4 12 - 1597 + 1613 12 17 - 2408 + 2433 17 513 - 584 + 590 @@ -17063,32 +17077,32 @@ 1 2 - 22027 + 22253 2 3 - 471 + 476 3 4 - 2848 + 2877 4 12 - 1597 + 1613 12 17 - 2408 + 2433 17 513 - 584 + 590 @@ -17104,12 +17118,12 @@ 1 2 - 27743 + 28028 2 33 - 2194 + 2217 @@ -17125,27 +17139,27 @@ 1 2 - 23442 + 23682 2 3 - 257 + 260 3 4 - 2647 + 2674 4 12 - 1440 + 1454 12 37 - 2150 + 2172 @@ -17161,37 +17175,37 @@ 1 2 - 3257 + 3290 2 3 - 2804 + 2833 3 4 - 1389 + 1403 4 5 - 81 + 82 5 6 - 3659 + 3697 6 13 - 333 + 336 14 15 - 2049 + 2070 16 @@ -17201,12 +17215,12 @@ 17 18 - 3401 + 3436 19 52 - 377 + 381 @@ -17222,37 +17236,37 @@ 1 2 - 3257 + 3290 2 3 - 2804 + 2833 3 4 - 1389 + 1403 4 5 - 81 + 82 5 6 - 3659 + 3697 6 13 - 333 + 336 14 15 - 2049 + 2070 16 @@ -17262,12 +17276,12 @@ 17 18 - 3401 + 3436 19 52 - 377 + 381 @@ -17283,22 +17297,22 @@ 1 2 - 5250 + 5304 2 3 - 5942 + 6003 3 4 - 6024 + 6085 4 7 - 182 + 184 @@ -17314,37 +17328,37 @@ 1 2 - 3861 + 3900 2 3 - 6219 + 6282 3 4 - 1163 + 1175 4 5 - 3672 + 3709 5 13 - 377 + 381 13 14 - 2049 + 2070 16 23 - 56 + 57 @@ -17360,22 +17374,22 @@ 1 2 - 3741 + 3779 2 3 - 427 + 431 3 210 - 358 + 362 223 11052 - 75 + 76 @@ -17391,22 +17405,22 @@ 1 2 - 3741 + 3779 2 3 - 427 + 431 3 210 - 358 + 362 223 11052 - 75 + 76 @@ -17422,17 +17436,17 @@ 1 2 - 3911 + 3951 2 3 - 371 + 374 3 2936 - 320 + 323 @@ -17448,17 +17462,17 @@ 1 2 - 3898 + 3938 2 3 - 383 + 387 3 1929 - 320 + 323 @@ -17964,15 +17978,15 @@ overrides - 159848 + 126795 new - 125042 + 123797 old - 15098 + 9825 @@ -17986,17 +18000,12 @@ 1 2 - 90243 + 120808 2 - 3 - 34793 - - - 3 4 - 6 + 2989 @@ -18012,37 +18021,37 @@ 1 2 - 7923 + 4324 2 3 - 1905 + 2116 3 4 - 987 + 932 4 5 - 1320 + 461 5 - 11 - 1213 + 7 + 856 - 11 - 60 - 1163 + 7 + 23 + 768 - 61 - 231 - 584 + 25 + 1464 + 365 @@ -18590,15 +18599,15 @@ autoderivation - 149150 + 149015 var - 149150 + 149015 derivation_type - 522 + 521 @@ -18612,7 +18621,7 @@ 1 2 - 149150 + 149015 @@ -21929,26 +21938,26 @@ usertype_final - 9504 + 9496 id - 9504 + 9496 usertype_uuid - 36295 + 36667 id - 36295 + 36667 uuid - 35924 + 36292 @@ -21962,7 +21971,7 @@ 1 2 - 36295 + 36667 @@ -21978,12 +21987,12 @@ 1 2 - 35553 + 35918 2 3 - 371 + 374 @@ -23520,26 +23529,26 @@ is_variable_template - 47210 + 47376 id - 47210 + 47376 variable_instantiation - 172651 + 172598 to - 172651 + 172598 from - 25902 + 25879 @@ -23553,7 +23562,7 @@ 1 2 - 172651 + 172598 @@ -23569,42 +23578,42 @@ 1 2 - 13891 + 13878 2 3 - 2611 + 2608 3 4 - 1253 + 1252 4 6 - 1880 + 1878 6 8 - 1357 + 1356 8 12 - 2193 + 2191 12 38 - 1984 + 1982 46 277 - 731 + 730 @@ -23614,19 +23623,19 @@ variable_template_argument - 310940 + 310761 variable_id - 163460 + 163415 index - 1775 + 1773 arg_type - 171293 + 171242 @@ -23640,22 +23649,22 @@ 1 2 - 83662 + 83690 2 3 - 50865 + 50819 3 4 - 18800 + 18783 4 17 - 10131 + 10122 @@ -23671,22 +23680,22 @@ 1 2 - 88362 + 88386 2 3 - 52119 + 52071 3 4 - 13682 + 13670 4 17 - 9295 + 9287 @@ -23740,8 +23749,8 @@ 104 - 1252 - 1253 + 1253 + 1254 104 @@ -23801,8 +23810,8 @@ 104 - 742 - 743 + 743 + 744 104 @@ -23819,22 +23828,22 @@ 1 2 - 137766 + 137745 2 3 - 19531 + 19513 3 - 23 - 12847 + 24 + 12939 - 23 + 24 110 - 1148 + 1043 @@ -23850,17 +23859,17 @@ 1 2 - 154268 + 154232 2 3 - 14935 + 14922 3 6 - 2088 + 2087 @@ -23870,11 +23879,11 @@ variable_template_argument_value - 11907 + 11896 variable_id - 7833 + 7826 index @@ -23882,7 +23891,7 @@ arg_value - 11907 + 11896 @@ -23896,7 +23905,7 @@ 1 2 - 7415 + 7409 2 @@ -23917,12 +23926,12 @@ 1 2 - 4386 + 4382 2 3 - 3133 + 3130 4 @@ -24005,7 +24014,7 @@ 1 2 - 11907 + 11896 @@ -24021,7 +24030,7 @@ 1 2 - 11907 + 11896 @@ -24918,11 +24927,11 @@ attributes - 735205 + 736102 id - 735205 + 736102 kind @@ -24930,7 +24939,7 @@ name - 1671 + 1669 name_space @@ -24938,7 +24947,7 @@ location - 482756 + 483464 @@ -24952,7 +24961,7 @@ 1 2 - 735205 + 736102 @@ -24968,7 +24977,7 @@ 1 2 - 735205 + 736102 @@ -24984,7 +24993,7 @@ 1 2 - 735205 + 736102 @@ -25000,7 +25009,7 @@ 1 2 - 735205 + 736102 @@ -25019,13 +25028,13 @@ 104 - 2330 - 2331 + 2332 + 2333 104 - 4704 - 4705 + 4717 + 4718 104 @@ -25092,13 +25101,13 @@ 104 - 2055 - 2056 + 2057 + 2058 104 - 2565 - 2566 + 2574 + 2575 104 @@ -25168,8 +25177,8 @@ 104 - 1043 - 1044 + 1048 + 1049 104 @@ -25178,8 +25187,8 @@ 104 - 3934 - 3935 + 3944 + 3945 104 @@ -25196,7 +25205,7 @@ 1 2 - 1462 + 1460 2 @@ -25217,7 +25226,7 @@ 1 2 - 1671 + 1669 @@ -25281,8 +25290,8 @@ 104 - 331 - 332 + 333 + 334 104 @@ -25291,8 +25300,8 @@ 104 - 2379 - 2380 + 2388 + 2389 104 @@ -25312,8 +25321,8 @@ 104 - 7016 - 7017 + 7031 + 7032 104 @@ -25375,8 +25384,8 @@ 104 - 4613 - 4614 + 4624 + 4625 104 @@ -25393,17 +25402,17 @@ 1 2 - 425205 + 425862 2 3 - 36869 + 36627 3 201 - 20680 + 20974 @@ -25419,7 +25428,7 @@ 1 2 - 482756 + 483464 @@ -25435,12 +25444,12 @@ 1 2 - 478473 + 479186 2 3 - 4282 + 4278 @@ -25456,7 +25465,7 @@ 1 2 - 482756 + 483464 @@ -26101,6 +26110,54 @@ + + attribute_arg_expr + 1 + + + arg + 1 + + + expr + 1 + + + + + arg + expr + + + 12 + + + 1 + 2 + 1 + + + + + + + expr + arg + + + 12 + + + 1 + 2 + 1 + + + + + + + attribute_arg_name 6 @@ -26156,15 +26213,15 @@ typeattributes - 84811 + 85047 type_id - 61937 + 62194 spec_id - 84811 + 85047 @@ -26178,17 +26235,17 @@ 1 2 - 55983 + 56245 2 4 - 4282 + 4278 12 13 - 1671 + 1669 @@ -26204,7 +26261,7 @@ 1 2 - 84811 + 85047 @@ -28126,19 +28183,19 @@ comments - 8761469 + 8756423 id - 8761469 + 8756423 contents - 3335424 + 3334269 location - 8761469 + 8756423 @@ -28152,7 +28209,7 @@ 1 2 - 8761469 + 8756423 @@ -28168,7 +28225,7 @@ 1 2 - 8761469 + 8756423 @@ -28184,17 +28241,17 @@ 1 2 - 3051327 + 3050117 2 7 - 250569 + 250654 7 32784 - 33527 + 33497 @@ -28210,17 +28267,17 @@ 1 2 - 3051327 + 3050117 2 7 - 250569 + 250654 7 32784 - 33527 + 33497 @@ -28236,7 +28293,7 @@ 1 2 - 8761469 + 8756423 @@ -28252,7 +28309,7 @@ 1 2 - 8761469 + 8756423 @@ -29008,11 +29065,11 @@ expr_isload - 5206600 + 5206561 expr_id - 5206600 + 5206561 @@ -30585,19 +30642,19 @@ bitfield - 20889 + 20870 id - 20889 + 20870 bits - 2611 + 2608 declared_bits - 2611 + 2608 @@ -30611,7 +30668,7 @@ 1 2 - 20889 + 20870 @@ -30627,7 +30684,7 @@ 1 2 - 20889 + 20870 @@ -30643,7 +30700,7 @@ 1 2 - 731 + 730 2 @@ -30694,7 +30751,7 @@ 1 2 - 2611 + 2608 @@ -30710,7 +30767,7 @@ 1 2 - 731 + 730 2 @@ -30761,7 +30818,7 @@ 1 2 - 2611 + 2608 @@ -30771,23 +30828,23 @@ initialisers - 1698635 + 1711579 init - 1698635 + 1711579 var - 722109 + 720140 expr - 1698635 + 1711579 location - 390823 + 394825 @@ -30801,7 +30858,7 @@ 1 2 - 1698635 + 1711579 @@ -30817,7 +30874,7 @@ 1 2 - 1698635 + 1711579 @@ -30833,7 +30890,7 @@ 1 2 - 1698635 + 1711579 @@ -30849,17 +30906,17 @@ 1 2 - 633984 + 634328 2 - 16 - 31466 + 15 + 28745 16 25 - 56657 + 57066 @@ -30875,17 +30932,17 @@ 1 2 - 633984 + 634328 2 - 16 - 31466 + 15 + 28745 16 25 - 56657 + 57066 @@ -30901,7 +30958,7 @@ 1 2 - 722102 + 720134 2 @@ -30922,7 +30979,7 @@ 1 2 - 1698635 + 1711579 @@ -30938,7 +30995,7 @@ 1 2 - 1698635 + 1711579 @@ -30954,7 +31011,7 @@ 1 2 - 1698635 + 1711579 @@ -30970,22 +31027,22 @@ 1 2 - 318451 + 321852 2 3 - 23851 + 23975 3 15 - 30680 + 31001 15 111551 - 17839 + 17997 @@ -31001,17 +31058,17 @@ 1 2 - 341120 + 344754 2 4 - 35642 + 36115 4 - 12811 - 14060 + 12073 + 13956 @@ -31027,22 +31084,22 @@ 1 2 - 318451 + 321852 2 3 - 23851 + 23975 3 15 - 30680 + 31001 15 111551 - 17839 + 17997 @@ -31641,15 +31698,15 @@ new_array_allocated_type - 5099 + 5101 expr - 5099 + 5101 type_id - 2194 + 2191 @@ -31663,7 +31720,7 @@ 1 2 - 5099 + 5101 @@ -31684,17 +31741,17 @@ 2 3 - 1943 + 1937 3 - 7 - 169 + 5 + 165 - 8 + 6 15 - 50 + 57 @@ -32827,15 +32884,15 @@ uuidof_bind - 20103 + 20309 expr - 20103 + 20309 type_id - 19908 + 20112 @@ -32849,7 +32906,7 @@ 1 2 - 20103 + 20309 @@ -32865,12 +32922,12 @@ 1 2 - 19745 + 19947 2 4 - 163 + 165 @@ -34006,19 +34063,19 @@ stmts - 4646866 + 4651301 id - 4646866 + 4651301 kind - 1984 + 1982 location - 2281758 + 2288031 @@ -34032,7 +34089,7 @@ 1 2 - 4646866 + 4651301 @@ -34048,7 +34105,7 @@ 1 2 - 4646866 + 4651301 @@ -34137,23 +34194,23 @@ 104 - 4612 - 4613 + 4613 + 4614 104 - 8756 - 8757 + 8794 + 8795 104 - 11554 - 11555 + 11560 + 11561 104 - 13283 - 13284 + 13321 + 13322 104 @@ -34243,23 +34300,23 @@ 104 - 2189 - 2190 + 2190 + 2191 104 - 4192 - 4193 + 4229 + 4230 104 - 6065 - 6066 + 6071 + 6072 104 - 6531 - 6532 + 6568 + 6569 104 @@ -34276,22 +34333,22 @@ 1 2 - 1887887 + 1894414 2 4 - 175576 + 175416 4 12 - 175785 + 175729 12 687 - 42510 + 42471 @@ -34307,12 +34364,12 @@ 1 2 - 2224626 + 2230846 2 8 - 57132 + 57185 @@ -34610,15 +34667,15 @@ constexpr_if_then - 52432 + 52384 constexpr_if_stmt - 52432 + 52384 then_id - 52432 + 52384 @@ -34632,7 +34689,7 @@ 1 2 - 52432 + 52384 @@ -34648,7 +34705,7 @@ 1 2 - 52432 + 52384 @@ -34658,15 +34715,15 @@ constexpr_if_else - 30811 + 30783 constexpr_if_stmt - 30811 + 30783 else_id - 30811 + 30783 @@ -34680,7 +34737,7 @@ 1 2 - 30811 + 30783 @@ -34696,7 +34753,7 @@ 1 2 - 30811 + 30783 @@ -35356,19 +35413,19 @@ stmtparents - 4053171 + 4057309 id - 4053171 + 4057309 index - 12211 + 12336 parent - 1719896 + 1722474 @@ -35382,7 +35439,7 @@ 1 2 - 4053171 + 4057309 @@ -35398,7 +35455,7 @@ 1 2 - 4053171 + 4057309 @@ -35414,52 +35471,52 @@ 1 2 - 4011 + 4053 2 3 - 999 + 1010 3 4 - 220 + 222 4 5 - 1553 + 1569 7 8 - 1018 + 1029 8 12 - 792 + 800 12 29 - 1075 + 1086 29 38 - 918 + 927 41 77 - 924 + 933 77 - 196965 - 697 + 195121 + 705 @@ -35475,52 +35532,52 @@ 1 2 - 4011 + 4053 2 3 - 999 + 1010 3 4 - 220 + 222 4 5 - 1553 + 1569 7 8 - 1018 + 1029 8 12 - 792 + 800 12 29 - 1075 + 1086 29 38 - 918 + 927 41 77 - 924 + 933 77 - 196965 - 697 + 195121 + 705 @@ -35536,32 +35593,32 @@ 1 2 - 987613 + 989875 2 3 - 373033 + 372788 3 4 - 105762 + 105778 4 6 - 111258 + 111280 6 17 - 129865 + 130458 17 1943 - 12362 + 12292 @@ -35577,32 +35634,32 @@ 1 2 - 987613 + 989875 2 3 - 373033 + 372788 3 4 - 105762 + 105778 4 6 - 111258 + 111280 6 17 - 129865 + 130458 17 1943 - 12362 + 12292 @@ -35649,7 +35706,7 @@ 1 2 - 524114 + 524113 2 @@ -35670,7 +35727,7 @@ 1 2 - 524114 + 524113 2 @@ -35916,7 +35973,7 @@ decl_entry - 527490 + 527489 @@ -36154,7 +36211,7 @@ 1 2 - 527469 + 527468 3 @@ -36175,7 +36232,7 @@ 1 2 - 527490 + 527489 @@ -36424,19 +36481,19 @@ preprocdirects - 4421260 + 4424439 id - 4421260 + 4424439 kind - 1044 + 1147 location - 4418753 + 4421830 @@ -36450,7 +36507,7 @@ 1 2 - 4421260 + 4424439 @@ -36466,7 +36523,7 @@ 1 2 - 4421260 + 4424439 @@ -36479,29 +36536,34 @@ 12 + + 1 + 2 + 104 + 122 123 104 - 692 - 693 + 694 + 695 104 - 795 - 796 + 799 + 800 104 - 918 - 919 + 932 + 933 104 - 1688 - 1689 + 1689 + 1690 104 @@ -36510,23 +36572,23 @@ 104 - 2983 - 2984 + 3012 + 3013 104 - 3797 - 3798 + 3802 + 3803 104 - 6280 - 6281 + 6290 + 6291 104 - 23263 - 23264 + 23266 + 23267 104 @@ -36540,29 +36602,34 @@ 12 + + 1 + 2 + 104 + 122 123 104 - 692 - 693 + 694 + 695 104 - 795 - 796 + 799 + 800 104 - 918 - 919 + 932 + 933 104 - 1688 - 1689 + 1689 + 1690 104 @@ -36571,23 +36638,23 @@ 104 - 2983 - 2984 + 3012 + 3013 104 - 3797 - 3798 + 3802 + 3803 104 - 6280 - 6281 + 6290 + 6291 104 - 23239 - 23240 + 23241 + 23242 104 @@ -36604,11 +36671,11 @@ 1 2 - 4418648 + 4421726 - 25 - 26 + 26 + 27 104 @@ -36625,7 +36692,7 @@ 1 2 - 4418753 + 4421830 @@ -36715,19 +36782,19 @@ preproctext - 3564582 + 3567497 id - 3564582 + 3567497 head - 2585700 + 2585436 body - 1512398 + 1511023 @@ -36741,7 +36808,7 @@ 1 2 - 3564582 + 3567497 @@ -36757,7 +36824,7 @@ 1 2 - 3564582 + 3567497 @@ -36773,12 +36840,12 @@ 1 2 - 2438952 + 2438403 2 740 - 146748 + 147032 @@ -36794,12 +36861,12 @@ 1 2 - 2523659 + 2523242 2 5 - 62041 + 62194 @@ -36815,17 +36882,17 @@ 1 2 - 1369097 + 1367851 2 6 - 113429 + 113326 6 - 11572 - 29871 + 11630 + 29844 @@ -36841,17 +36908,17 @@ 1 2 - 1372126 + 1370878 2 7 - 113743 + 113639 7 - 2959 - 26529 + 2980 + 26505 @@ -36934,15 +37001,15 @@ link_targets - 1475 + 850 id - 1475 + 850 binary - 1475 + 850 @@ -36956,7 +37023,7 @@ 1 2 - 1475 + 850 @@ -36972,7 +37039,7 @@ 1 2 - 1475 + 850 diff --git a/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/old.dbscheme b/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/old.dbscheme new file mode 100644 index 00000000000..fc81eb5a3a7 --- /dev/null +++ b/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/old.dbscheme @@ -0,0 +1,2233 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..d8149ca90e6 --- /dev/null +++ b/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/semmlecode.cpp.dbscheme @@ -0,0 +1,2238 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/upgrade.properties b/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/upgrade.properties new file mode 100644 index 00000000000..87523401555 --- /dev/null +++ b/cpp/ql/lib/upgrades/fc81eb5a3a7cdde8d9ad813da1e8f1e90dadbb91/upgrade.properties @@ -0,0 +1,2 @@ +description: Support expression attribute arguments +compatibility: backwards diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index c771f8bd03e..e1485b43676 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.1 + +No user-facing changes. + ## 0.9.0 ### Breaking Changes diff --git a/cpp/ql/src/Critical/FlowAfterFree.qll b/cpp/ql/src/Critical/FlowAfterFree.qll index a264a26af0d..caca108f4b2 100644 --- a/cpp/ql/src/Critical/FlowAfterFree.qll +++ b/cpp/ql/src/Critical/FlowAfterFree.qll @@ -87,6 +87,8 @@ module FlowFromFree { | e = any(StoreInstruction store).getDestinationAddress().getUnconvertedResultExpression() ) + or + n.asExpr() instanceof ArrayExpr } } diff --git a/cpp/ql/src/Critical/UseAfterFree.ql b/cpp/ql/src/Critical/UseAfterFree.ql index 228761de5c0..4b27369074c 100644 --- a/cpp/ql/src/Critical/UseAfterFree.ql +++ b/cpp/ql/src/Critical/UseAfterFree.ql @@ -101,35 +101,43 @@ module ParameterSinks { ) } - private CallInstruction getAnAlwaysReachedCallInstruction(IRFunction f) { - result.getBlock().postDominates(f.getEntryBlock()) + private CallInstruction getAnAlwaysReachedCallInstruction() { + exists(IRFunction f | result.getBlock().postDominates(f.getEntryBlock())) } pragma[nomagic] - predicate callHasTargetAndArgument(Function f, int i, CallInstruction call, Instruction argument) { - call.getStaticCallTarget() = f and - call.getArgument(i) = argument + private predicate callHasTargetAndArgument(Function f, int i, Instruction argument) { + exists(CallInstruction call | + call.getStaticCallTarget() = f and + call.getArgument(i) = argument and + call = getAnAlwaysReachedCallInstruction() + ) } pragma[nomagic] - predicate initializeParameterInFunction(Function f, int i, InitializeParameterInstruction init) { - pragma[only_bind_out](init.getEnclosingFunction()) = f and - init.hasIndex(i) + private predicate initializeParameterInFunction(Function f, int i) { + exists(InitializeParameterInstruction init | + pragma[only_bind_out](init.getEnclosingFunction()) = f and + init.hasIndex(i) and + init = getAnAlwaysDereferencedParameter() + ) + } + + pragma[nomagic] + private predicate alwaysDereferencedArgumentHasValueNumber(ValueNumber vn) { + exists(int i, Function f, Instruction argument | + callHasTargetAndArgument(f, i, argument) and + initializeParameterInFunction(pragma[only_bind_into](f), pragma[only_bind_into](i)) and + vn.getAnInstruction() = argument + ) } InitializeParameterInstruction getAnAlwaysDereferencedParameter() { result = getAnAlwaysDereferencedParameter0() or - exists( - CallInstruction call, int i, InitializeParameterInstruction p, Instruction argument, - Function f - | - callHasTargetAndArgument(f, i, call, argument) and - initializeParameterInFunction(f, i, p) and - p = getAnAlwaysDereferencedParameter() and - result = - pragma[only_bind_out](pragma[only_bind_into](valueNumber(argument)).getAnInstruction()) and - call = getAnAlwaysReachedCallInstruction(_) + exists(ValueNumber vn | + alwaysDereferencedArgumentHasValueNumber(vn) and + vn.getAnInstruction() = result ) } } diff --git a/cpp/ql/src/Security/CWE/CWE-416/Temporaries.qll b/cpp/ql/src/Security/CWE/CWE-416/Temporaries.qll new file mode 100644 index 00000000000..492bad166a9 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-416/Temporaries.qll @@ -0,0 +1,98 @@ +import cpp +import semmle.code.cpp.models.implementations.StdContainer + +/** + * Holds if `e` will be consumed by its parent as a glvalue and does not have + * an lvalue-to-rvalue conversion. This means that it will be materialized into + * a temporary object. + */ +predicate isTemporary(Expr e) { + e instanceof TemporaryObjectExpr + or + e.isPRValueCategory() and + e.getUnspecifiedType() instanceof Class and + not e.hasLValueToRValueConversion() +} + +/** Holds if `e` is written to a container. */ +predicate isStoredInContainer(Expr e) { + exists(StdSequenceContainerInsert insert, Call call, int index | + call = insert.getACallToThisFunction() and + index = insert.getAValueTypeParameterIndex() and + call.getArgument(index) = e + ) + or + exists(StdSequenceContainerPush push, Call call, int index | + call = push.getACallToThisFunction() and + index = push.getAValueTypeParameterIndex() and + call.getArgument(index) = e + ) + or + exists(StdSequenceEmplace emplace, Call call, int index | + call = emplace.getACallToThisFunction() and + index = emplace.getAValueTypeParameterIndex() and + call.getArgument(index) = e + ) + or + exists(StdSequenceEmplaceBack emplaceBack, Call call, int index | + call = emplaceBack.getACallToThisFunction() and + index = emplaceBack.getAValueTypeParameterIndex() and + call.getArgument(index) = e + ) +} + +/** + * Holds if `e` or a conversion of `e` has an lvalue-to-rvalue conversion. + */ +private predicate hasLValueToRValueConversion(Expr e) { + e.getConversion*().hasLValueToRValueConversion() and + not e instanceof ConditionalExpr // ConditionalExpr may be spuriously reported as having an lvalue-to-rvalue conversion +} + +/** + * Holds if the value of `e` outlives the enclosing full expression. For + * example, because the value is stored in a local variable. + */ +predicate outlivesFullExpr(Expr e) { + not hasLValueToRValueConversion(e) and + ( + any(Assignment assign).getRValue() = e + or + any(Variable v).getInitializer().getExpr() = e + or + any(ReturnStmt ret).getExpr() = e + or + exists(ConditionalExpr cond | + outlivesFullExpr(cond) and + [cond.getThen(), cond.getElse()] = e + ) + or + exists(BinaryOperation bin | + outlivesFullExpr(bin) and + bin.getAnOperand() = e and + not bin instanceof ComparisonOperation + ) + or + exists(PointerFieldAccess fa | + outlivesFullExpr(fa) and + fa.getQualifier() = e + ) + or + exists(AddressOfExpr ao | + outlivesFullExpr(ao) and + ao.getOperand() = e + ) + or + exists(ClassAggregateLiteral aggr | + outlivesFullExpr(aggr) and + aggr.getAFieldExpr(_) = e + ) + or + exists(ArrayAggregateLiteral aggr | + outlivesFullExpr(aggr) and + aggr.getAnElementExpr(_) = e + ) + or + isStoredInContainer(e) + ) +} diff --git a/cpp/ql/src/Security/CWE/CWE-416/UseOfStringAfterLifetimeEnds.ql b/cpp/ql/src/Security/CWE/CWE-416/UseOfStringAfterLifetimeEnds.ql index 5fd75150167..7d776280f91 100644 --- a/cpp/ql/src/Security/CWE/CWE-416/UseOfStringAfterLifetimeEnds.ql +++ b/cpp/ql/src/Security/CWE/CWE-416/UseOfStringAfterLifetimeEnds.ql @@ -14,81 +14,7 @@ import cpp import semmle.code.cpp.models.implementations.StdString -import semmle.code.cpp.models.implementations.StdContainer - -/** - * Holds if `e` will be consumed by its parent as a glvalue and does not have - * an lvalue-to-rvalue conversion. This means that it will be materialized into - * a temporary object. - */ -predicate isTemporary(Expr e) { - e instanceof TemporaryObjectExpr - or - e.isPRValueCategory() and - e.getUnspecifiedType() instanceof Class and - not e.hasLValueToRValueConversion() -} - -/** Holds if `e` is written to a container. */ -predicate isStoredInContainer(Expr e) { - exists(StdSequenceContainerInsert insert, Call call, int index | - call = insert.getACallToThisFunction() and - index = insert.getAValueTypeParameterIndex() and - call.getArgument(index) = e - ) - or - exists(StdSequenceContainerPush push, Call call, int index | - call = push.getACallToThisFunction() and - index = push.getAValueTypeParameterIndex() and - call.getArgument(index) = e - ) - or - exists(StdSequenceEmplace emplace, Call call, int index | - call = emplace.getACallToThisFunction() and - index = emplace.getAValueTypeParameterIndex() and - call.getArgument(index) = e - ) - or - exists(StdSequenceEmplaceBack emplaceBack, Call call, int index | - call = emplaceBack.getACallToThisFunction() and - index = emplaceBack.getAValueTypeParameterIndex() and - call.getArgument(index) = e - ) -} - -/** - * Holds if the value of `e` outlives the enclosing full expression. For - * example, because the value is stored in a local variable. - */ -predicate outlivesFullExpr(Expr e) { - any(Assignment assign).getRValue() = e - or - any(Variable v).getInitializer().getExpr() = e - or - any(ReturnStmt ret).getExpr() = e - or - exists(ConditionalExpr cond | - outlivesFullExpr(cond) and - [cond.getThen(), cond.getElse()] = e - ) - or - exists(BinaryOperation bin | - outlivesFullExpr(bin) and - bin.getAnOperand() = e - ) - or - exists(ClassAggregateLiteral aggr | - outlivesFullExpr(aggr) and - aggr.getAFieldExpr(_) = e - ) - or - exists(ArrayAggregateLiteral aggr | - outlivesFullExpr(aggr) and - aggr.getAnElementExpr(_) = e - ) - or - isStoredInContainer(e) -} +import Temporaries from Call c where diff --git a/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.qhelp b/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.qhelp new file mode 100644 index 00000000000..675defdfc67 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.qhelp @@ -0,0 +1,44 @@ + + + + +

Calling get on a std::unique_ptr object returns a pointer to the underlying allocations. +When the std::unique_ptr object is destroyed, the pointer returned by get is no +longer valid. If the pointer is used after the std::unique_ptr object is destroyed, then the behavior is undefined. +

+
+ + +

+Ensure that the pointer returned by get does not outlive the underlying std::unique_ptr object. +

+
+ + +

+The following example gets a std::unique_ptr object, and then converts the resulting unique pointer to a +pointer using get so that it can be passed to the work function. + +However, the std::unique_ptr object is destroyed as soon as the call +to get returns. This means that work is given a pointer to invalid memory. +

+ + + +

+The following example fixes the above code by ensuring that the pointer returned by the call to get does +not outlive the underlying std::unique_ptr objects. This ensures that the pointer passed to work +points to valid memory. +

+ + + +
+ + +
  • MEM50-CPP. Do not access freed memory.
  • + +
    +
    diff --git a/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.ql b/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.ql new file mode 100644 index 00000000000..84ef99ce955 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.ql @@ -0,0 +1,36 @@ +/** + * @name Use of unique pointer after lifetime ends + * @description Referencing the contents of a unique pointer after the underlying object has expired may lead to unexpected behavior. + * @kind problem + * @precision high + * @id cpp/use-of-unique-pointer-after-lifetime-ends + * @problem.severity warning + * @security-severity 8.8 + * @tags reliability + * security + * external/cwe/cwe-416 + * external/cwe/cwe-664 + */ + +import cpp +import semmle.code.cpp.models.interfaces.PointerWrapper +import Temporaries + +predicate isUniquePointerDerefFunction(Function f) { + exists(PointerWrapper wrapper | + f = wrapper.getAnUnwrapperFunction() and + // We only want unique pointers as the memory behind share pointers may still be + // alive after the shared pointer is destroyed. + wrapper.(Class).hasQualifiedName(["std", "bsl"], "unique_ptr") + ) +} + +from Call c +where + outlivesFullExpr(c) and + not c.isFromUninstantiatedTemplate(_) and + isUniquePointerDerefFunction(c.getTarget()) and + isTemporary(c.getQualifier().getFullyConverted()) +select c, + "The underlying unique pointer object is destroyed after the call to '" + c.getTarget() + + "' returns." diff --git a/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEndsBad.cpp b/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEndsBad.cpp new file mode 100644 index 00000000000..b706f1fbb5f --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEndsBad.cpp @@ -0,0 +1,10 @@ +#include +std::unique_ptr getUniquePointer(); +void work(const T*); + +// BAD: the unique pointer is deallocated when `get` returns. So `work` +// is given a pointer to invalid memory. +void work_with_unique_ptr_bad() { + const T* combined_string = getUniquePointer().get(); + work(combined_string); +} \ No newline at end of file diff --git a/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEndsGood.cpp b/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEndsGood.cpp new file mode 100644 index 00000000000..eee39bd3582 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEndsGood.cpp @@ -0,0 +1,10 @@ +#include +std::unique_ptr getUniquePointer(); +void work(const T*); + +// GOOD: the unique pointer outlives the call to `work`. So the pointer +// obtainted from `get` is valid. +void work_with_unique_ptr_good() { + auto combined_string = getUniquePointer(); + work(combined_string.get()); +} \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2023-12-12-use-of-unique-pointer-after-lifetime-ends.md b/cpp/ql/src/change-notes/2023-12-12-use-of-unique-pointer-after-lifetime-ends.md new file mode 100644 index 00000000000..a74017aa6a1 --- /dev/null +++ b/cpp/ql/src/change-notes/2023-12-12-use-of-unique-pointer-after-lifetime-ends.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `cpp/use-of-unique-pointer-after-lifetime-ends`, to detect uses of the contents unique pointers that will be destroyed immediately. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/released/0.9.1.md b/cpp/ql/src/change-notes/released/0.9.1.md new file mode 100644 index 00000000000..5ab7a1ee037 --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.9.1.md @@ -0,0 +1,3 @@ +## 0.9.1 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 8b9fc185202..6789dcd18b7 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.0 +lastReleaseVersion: 0.9.1 diff --git a/cpp/ql/src/jsf/4.16 Initialization/AV Rule 145.ql b/cpp/ql/src/jsf/4.16 Initialization/AV Rule 145.ql index dd5ee4bf963..9cd04c97328 100644 --- a/cpp/ql/src/jsf/4.16 Initialization/AV Rule 145.ql +++ b/cpp/ql/src/jsf/4.16 Initialization/AV Rule 145.ql @@ -32,18 +32,41 @@ predicate hasReferenceInitializer(EnumConstant c) { ) } +/** + * Gets the `rnk`'th (1-based) enumeration constant in `e` that does not have a + * reference initializer (i.e., an initializer that refers to an enumeration + * constant from the same enumeration). + */ +EnumConstant getNonReferenceInitializedEnumConstantByRank(Enum e, int rnk) { + result = + rank[rnk](EnumConstant cand, int pos, string filepath, int startline, int startcolumn | + e.getEnumConstant(pos) = cand and + not hasReferenceInitializer(cand) and + cand.getLocation().hasLocationInfo(filepath, startline, startcolumn, _, _) + | + cand order by pos, filepath, startline, startcolumn + ) +} + +/** + * Holds if `ec` is not the last enumeration constant in `e` that has a non- + * reference initializer. + */ +predicate hasNextWithoutReferenceInitializer(Enum e, EnumConstant ec) { + exists(int rnk | + ec = getNonReferenceInitializedEnumConstantByRank(e, rnk) and + exists(getNonReferenceInitializedEnumConstantByRank(e, rnk + 1)) + ) +} + // There exists another constant whose value is implicit, but it's // not the last one: the last value is okay to use to get the highest // enum value automatically. It can be followed by aliases though. predicate enumThatHasConstantWithImplicitValue(Enum e) { - exists(EnumConstant ec, int pos | - ec = e.getEnumConstant(pos) and + exists(EnumConstant ec | + ec = e.getAnEnumConstant() and not hasInitializer(ec) and - exists(EnumConstant ec2, int pos2 | - ec2 = e.getEnumConstant(pos2) and - pos2 > pos and - not hasReferenceInitializer(ec2) - ) + hasNextWithoutReferenceInitializer(e, ec) ) } diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index d6adec1bbda..9c5e81a6c31 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.1-dev +version: 0.9.2-dev groups: - cpp - queries diff --git a/cpp/ql/test/header-variant-tests/clang-pch/clang-pch.expected b/cpp/ql/test/header-variant-tests/clang-pch/clang-pch.expected index 78c63f748e4..d363a792a3c 100644 --- a/cpp/ql/test/header-variant-tests/clang-pch/clang-pch.expected +++ b/cpp/ql/test/header-variant-tests/clang-pch/clang-pch.expected @@ -1,6 +1,7 @@ | b.c:5:3:5:34 | return ... | 10 | | c.c:2:3:2:20 | return ... | 5 | | e.c:2:3:2:19 | return ... | 17 | +| g.c:3:3:3:12 | return ... | 20 | | i.c:3:3:3:12 | return ... | 30 | | i.c:8:3:8:12 | return ... | 31 | | i.c:13:3:13:12 | return ... | 32 | diff --git a/cpp/ql/test/header-variant-tests/clang-pch/g.c b/cpp/ql/test/header-variant-tests/clang-pch/g.c index feabf6be4a7..b16ca33ab36 100644 --- a/cpp/ql/test/header-variant-tests/clang-pch/g.c +++ b/cpp/ql/test/header-variant-tests/clang-pch/g.c @@ -3,4 +3,4 @@ static int g() { return 20; } #endif -// semmle-extractor-options: --clang -include-pch ${testdir}/clang-pch.testproj/f.pch --expect_errors +// semmle-extractor-options: --clang -include-pch ${testdir}/clang-pch.testproj/f.pch diff --git a/cpp/ql/test/header-variant-tests/clang-pch/i.c b/cpp/ql/test/header-variant-tests/clang-pch/i.c index f162aa818d9..05aa74b3047 100644 --- a/cpp/ql/test/header-variant-tests/clang-pch/i.c +++ b/cpp/ql/test/header-variant-tests/clang-pch/i.c @@ -1,6 +1,6 @@ #ifdef SEEN_H static int h() { - return 30; // [FALSE POSITIVE] (#pragma hdrstop bug, SEEN_H should not be defined in the precompiled header) + return 30; } #endif #ifdef H1 @@ -10,7 +10,7 @@ static int h1() { #endif #ifdef H2 static int h2() { - return 32; // [FALSE POSITIVE] (#pragma hdrstop bug, H2 should not be defined in the precompiled header) + return 32; } #endif // semmle-extractor-options: --clang -include-pch ${testdir}/clang-pch.testproj/h.pch diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected index ed41630c825..f30092f0626 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected @@ -9,7 +9,6 @@ edges | test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:85:12:85:12 | a | | test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:103:10:103:10 | a | | test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | -| test_free.cpp:131:10:131:13 | pointer to free output argument | test_free.cpp:132:10:132:13 | access to array | | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | | test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | nodes @@ -33,8 +32,6 @@ nodes | test_free.cpp:103:10:103:10 | a | semmle.label | a | | test_free.cpp:128:10:128:11 | pointer to free output argument | semmle.label | pointer to free output argument | | test_free.cpp:129:10:129:11 | * ... | semmle.label | * ... | -| test_free.cpp:131:10:131:13 | pointer to free output argument | semmle.label | pointer to free output argument | -| test_free.cpp:132:10:132:13 | access to array | semmle.label | access to array | | test_free.cpp:152:27:152:27 | pointer to free output argument | semmle.label | pointer to free output argument | | test_free.cpp:154:10:154:10 | a | semmle.label | a | | test_free.cpp:207:10:207:10 | pointer to free output argument | semmle.label | pointer to free output argument | @@ -51,6 +48,5 @@ subpaths | test_free.cpp:85:12:85:12 | a | test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:85:12:85:12 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:83:5:83:13 | delete | delete | | test_free.cpp:103:10:103:10 | a | test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:103:10:103:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:101:5:101:8 | call to free | call to free | | test_free.cpp:129:10:129:11 | * ... | test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | Memory pointed to by '* ...' may already have been freed by $@. | test_free.cpp:128:5:128:8 | call to free | call to free | -| test_free.cpp:132:10:132:13 | access to array | test_free.cpp:131:10:131:13 | pointer to free output argument | test_free.cpp:132:10:132:13 | access to array | Memory pointed to by 'access to array' may already have been freed by $@. | test_free.cpp:131:5:131:8 | call to free | call to free | | test_free.cpp:154:10:154:10 | a | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:152:22:152:25 | call to free | call to free | | test_free.cpp:209:10:209:10 | a | test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:207:5:207:8 | call to free | call to free | diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/test_free.cpp b/cpp/ql/test/query-tests/Critical/MemoryFreed/test_free.cpp index b47f2ef5bb3..24c0fcd922c 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/test_free.cpp +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/test_free.cpp @@ -129,7 +129,7 @@ void test_ptr_deref(void ** a) { free(*a); // BAD *a = malloc(10); free(a[0]); // GOOD - free(a[1]); // GOOD [FALSE POSITIVE] + free(a[1]); // GOOD } struct list { diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfStringAfterLifetimeEnds/UseOfStringAfterLifetimeEnds.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfStringAfterLifetimeEnds/UseOfStringAfterLifetimeEnds.expected index 7e33c948d2e..e6f64d57c99 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfStringAfterLifetimeEnds/UseOfStringAfterLifetimeEnds.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfStringAfterLifetimeEnds/UseOfStringAfterLifetimeEnds.expected @@ -9,4 +9,5 @@ | test.cpp:188:39:188:42 | call to data | The underlying string object is destroyed after the call to 'data' returns. | | test.cpp:189:44:189:47 | call to data | The underlying string object is destroyed after the call to 'data' returns. | | test.cpp:191:29:191:32 | call to data | The underlying string object is destroyed after the call to 'data' returns. | -| test.cpp:193:31:193:35 | call to c_str | The underlying string object is destroyed after the call to 'c_str' returns. | +| test.cpp:193:47:193:51 | call to c_str | The underlying string object is destroyed after the call to 'c_str' returns. | +| test.cpp:195:31:195:35 | call to c_str | The underlying string object is destroyed after the call to 'c_str' returns. | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfStringAfterLifetimeEnds/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfStringAfterLifetimeEnds/test.cpp index 51f85c91860..4b3d934088d 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfStringAfterLifetimeEnds/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfStringAfterLifetimeEnds/test.cpp @@ -190,6 +190,8 @@ const char* test1(bool b1, bool b2) { char* s9; s9 = std::string("hello").data(); // BAD + const char* s13 = b1 ? std::string("hello").c_str() : s1; // BAD + return std::string("hello").c_str(); // BAD } diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/UseOfUniquePointerAfterLifetimeEnds.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/UseOfUniquePointerAfterLifetimeEnds.expected new file mode 100644 index 00000000000..3af8b501a66 --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/UseOfUniquePointerAfterLifetimeEnds.expected @@ -0,0 +1,11 @@ +| test.cpp:156:15:156:15 | call to operator* | The underlying unique pointer object is destroyed after the call to 'operator*' returns. | +| test.cpp:157:31:157:33 | call to get | The underlying unique pointer object is destroyed after the call to 'get' returns. | +| test.cpp:159:32:159:32 | call to operator-> | The underlying unique pointer object is destroyed after the call to 'operator->' returns. | +| test.cpp:160:35:160:37 | call to get | The underlying unique pointer object is destroyed after the call to 'get' returns. | +| test.cpp:161:44:161:46 | call to get | The underlying unique pointer object is destroyed after the call to 'get' returns. | +| test.cpp:163:25:163:27 | call to get | The underlying unique pointer object is destroyed after the call to 'get' returns. | +| test.cpp:172:33:172:35 | call to get | The underlying unique pointer object is destroyed after the call to 'get' returns. | +| test.cpp:174:32:174:34 | call to get | The underlying unique pointer object is destroyed after the call to 'get' returns. | +| test.cpp:177:16:177:16 | call to operator* | The underlying unique pointer object is destroyed after the call to 'operator*' returns. | +| test.cpp:177:36:177:36 | call to operator* | The underlying unique pointer object is destroyed after the call to 'operator*' returns. | +| test.cpp:179:11:179:11 | call to operator* | The underlying unique pointer object is destroyed after the call to 'operator*' returns. | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/UseOfUniquePointerAfterLifetimeEnds.qlref b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/UseOfUniquePointerAfterLifetimeEnds.qlref new file mode 100644 index 00000000000..4c613e5c5ac --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/UseOfUniquePointerAfterLifetimeEnds.qlref @@ -0,0 +1 @@ +Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.ql \ No newline at end of file diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/test.cpp new file mode 100644 index 00000000000..22eec736df7 --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseOfUniquePtrAfterLifetimeEnds/test.cpp @@ -0,0 +1,206 @@ +typedef unsigned long size_t; + +namespace std { + template struct remove_reference { typedef T type; }; + + template struct remove_reference { typedef T type; }; + + template struct remove_reference { typedef T type; }; + + template using remove_reference_t = typename remove_reference::type; + + template< class T > std::remove_reference_t&& move( T&& t ); + + template< class T > struct default_delete; + + template struct add_lvalue_reference { typedef T& type; }; +} + +// --- iterator --- + +namespace std { + template struct remove_const { typedef T type; }; + + template struct remove_const { typedef T type; }; + + // `remove_const_t` removes any `const` specifier from `T` + template using remove_const_t = typename remove_const::type; + + struct ptrdiff_t; + + template struct iterator_traits; + + template + struct iterator { + typedef Category iterator_category; + + iterator(); + iterator(iterator > const &other); // non-const -> const conversion constructor + + iterator &operator++(); + iterator operator++(int); + iterator &operator--(); + iterator operator--(int); + bool operator==(iterator other) const; + bool operator!=(iterator other) const; + reference_type operator*() const; + pointer_type operator->() const; + iterator operator+(int); + iterator operator-(int); + iterator &operator+=(int); + iterator &operator-=(int); + int operator-(iterator); + reference_type operator[](int); + }; + + struct input_iterator_tag {}; + struct forward_iterator_tag : public input_iterator_tag {}; + struct bidirectional_iterator_tag : public forward_iterator_tag {}; + struct random_access_iterator_tag : public bidirectional_iterator_tag {}; +} + +// --- string --- + +namespace std +{ + + using nullptr_t = decltype(nullptr); + + template> class unique_ptr { + public: + using pointer = T*; + using element_type = T; + using deleter_type = Deleter; + + constexpr unique_ptr() noexcept; + constexpr unique_ptr(nullptr_t) noexcept; + explicit unique_ptr(pointer p) noexcept; + unique_ptr(unique_ptr&& u) noexcept; + template unique_ptr(unique_ptr&& u) noexcept; + unique_ptr(const unique_ptr&) = delete; + + unique_ptr& operator=(unique_ptr&& u) noexcept; + unique_ptr& operator=(std::nullptr_t) noexcept; + template unique_ptr& operator=(unique_ptr&& u) noexcept; + + ~unique_ptr(); + + pointer get() const noexcept; + deleter_type& get_deleter() noexcept; + const deleter_type& get_deleter() const noexcept; + explicit operator bool() const noexcept; + typename std::add_lvalue_reference::type operator*() const; + pointer operator->() const noexcept; + pointer release() noexcept; + void reset(pointer p = pointer()) noexcept; + void swap(unique_ptr& u) noexcept; + }; +} + +// --- vector --- + +namespace std { + template class allocator { + public: + allocator() throw(); + typedef size_t size_type; + }; + + template> + class vector { + public: + using value_type = T; + using reference = value_type&; + using const_reference = const value_type&; + using size_type = unsigned int; + using iterator = std::iterator; + using const_iterator = std::iterator; + + vector() noexcept(noexcept(Allocator())); + explicit vector(const Allocator&) noexcept; + explicit vector(size_type n, const Allocator& = Allocator()); + vector(size_type n, const T& value, const Allocator& = Allocator()); + template vector(InputIterator first, InputIterator last, const Allocator& = Allocator()); + ~vector(); + + void push_back(const T& x); + void push_back(T&& x); + + iterator insert(const_iterator position, const T& x); + iterator insert(const_iterator position, T&& x); + iterator insert(const_iterator position, size_type n, const T& x); + template iterator insert(const_iterator position, InputIterator first, InputIterator last); + + template iterator emplace (const_iterator position, Args&&... args); + template void emplace_back (Args&&... args); + }; +} + +struct S { + const char* s; +}; + +void call(S*); + +void call_by_value(S); +void call_by_ref(S&); + +std::unique_ptr get_unique_ptr(); + +const S* test1(bool b1, bool b2) { + auto s1 = *get_unique_ptr(); // GOOD + auto s1a = &*get_unique_ptr(); // BAD + auto s1b = get_unique_ptr().get(); // BAD + auto s1c = get_unique_ptr()->s; // GOOD + auto s1d = &(get_unique_ptr()->s); // BAD + auto s2 = b1 ? get_unique_ptr().get() : nullptr; // BAD + auto s3 = b2 ? nullptr :get_unique_ptr().get(); // BAD + const S* s4; + s4 = get_unique_ptr().get(); // BAD + + call(get_unique_ptr().get()); // GOOD + call(b1 ? get_unique_ptr().get() : nullptr); // GOOD + call(b1 ? (b2 ? nullptr : get_unique_ptr().get()) : nullptr); // GOOD + call_by_value(*get_unique_ptr()); // GOOD + call_by_ref(*get_unique_ptr()); // GOOD + + std::vector v1; + v1.push_back(get_unique_ptr().get()); // BAD + + S* s5[] = { get_unique_ptr().get() }; // BAD + + S s6 = b1 ? *get_unique_ptr() : *get_unique_ptr(); // GOOD + S& s7 = b1 ? *get_unique_ptr() : *get_unique_ptr(); // BAD + + return &*get_unique_ptr(); // BAD +} + +void test2(bool b1, bool b2) { + + std::unique_ptr s = get_unique_ptr(); + auto s1 = s.get(); // GOOD + auto s2 = b1 ? s.get() : nullptr; // GOOD + auto s3 = b2 ? nullptr : s.get(); // GOOD + const S* s4; + s4 = s.get(); // GOOD + + std::unique_ptr& sRef = s; + + auto s5 = sRef.get(); // GOOD + auto s6 = b1 ? sRef.get() : nullptr; // GOOD + auto s7 = b2 ? nullptr : sRef.get(); // GOOD + const S* s8; + s8 = sRef.get(); // GOOD + + std::unique_ptr&& sRefRef = get_unique_ptr(); + + auto s9 = sRefRef.get(); // GOOD + auto s10 = b1 ? sRefRef.get() : nullptr; // GOOD + auto s11 = b2 ? nullptr : sRefRef.get(); // GOOD + const S* s12; + s12 = sRefRef.get(); // GOOD +} \ No newline at end of file diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs index 155ae44d494..30b7322fe98 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs @@ -936,9 +936,8 @@ namespace Semmle.Autobuild.CSharp.Tests { actions.RunProcess["dotnet --list-sdks"] = 0; actions.RunProcessOut["dotnet --list-sdks"] = "2.1.2 [C:\\Program Files\\dotnet\\sdks]\n2.1.4 [C:\\Program Files\\dotnet\\sdks]"; - actions.RunProcess[@"chmod u+x dotnet-install.sh"] = 0; - actions.RunProcess[@"./dotnet-install.sh --channel release --version 2.1.3 --install-dir scratch/.dotnet"] = 0; - actions.RunProcess[@"rm dotnet-install.sh"] = 0; + actions.RunProcess[@"chmod u+x scratch/.dotnet/dotnet-install.sh"] = 0; + actions.RunProcess[@"scratch/.dotnet/dotnet-install.sh --channel release --version 2.1.3 --install-dir scratch/.dotnet"] = 0; actions.RunProcess[@"scratch/.dotnet/dotnet --info"] = 0; actions.RunProcess[@"scratch/.dotnet/dotnet clean C:\Project/test.csproj"] = 0; actions.RunProcess[@"scratch/.dotnet/dotnet restore C:\Project/test.csproj"] = 0; @@ -960,10 +959,11 @@ namespace Semmle.Autobuild.CSharp.Tests "); actions.LoadXml[@"C:\Project/test.csproj"] = xml; - actions.DownloadFiles.Add(("https://dot.net/v1/dotnet-install.sh", "dotnet-install.sh")); + actions.DownloadFiles.Add(("https://dot.net/v1/dotnet-install.sh", "scratch/.dotnet/dotnet-install.sh")); + actions.CreateDirectories.Add(@"scratch/.dotnet"); var autobuilder = CreateAutoBuilder(false, dotnetVersion: "2.1.3"); - TestAutobuilderScript(autobuilder, 0, 8); + TestAutobuilderScript(autobuilder, 0, 7); } [Fact] @@ -972,9 +972,8 @@ namespace Semmle.Autobuild.CSharp.Tests actions.RunProcess["dotnet --list-sdks"] = 0; actions.RunProcessOut["dotnet --list-sdks"] = @"2.1.3 [C:\Program Files\dotnet\sdks] 2.1.4 [C:\Program Files\dotnet\sdks]"; - actions.RunProcess[@"chmod u+x dotnet-install.sh"] = 0; - actions.RunProcess[@"./dotnet-install.sh --channel release --version 2.1.3 --install-dir scratch/.dotnet"] = 0; - actions.RunProcess[@"rm dotnet-install.sh"] = 0; + actions.RunProcess[@"chmod u+x scratch/.dotnet/dotnet-install.sh"] = 0; + actions.RunProcess[@"scratch/.dotnet/dotnet-install.sh --channel release --version 2.1.3 --install-dir scratch/.dotnet"] = 0; actions.RunProcess[@"scratch/.dotnet/dotnet --info"] = 0; actions.RunProcess[@"scratch/.dotnet/dotnet clean C:\Project/test.csproj"] = 0; actions.RunProcess[@"scratch/.dotnet/dotnet restore C:\Project/test.csproj"] = 0; @@ -996,10 +995,11 @@ namespace Semmle.Autobuild.CSharp.Tests "); actions.LoadXml[@"C:\Project/test.csproj"] = xml; - actions.DownloadFiles.Add(("https://dot.net/v1/dotnet-install.sh", "dotnet-install.sh")); + actions.DownloadFiles.Add(("https://dot.net/v1/dotnet-install.sh", "scratch/.dotnet/dotnet-install.sh")); + actions.CreateDirectories.Add(@"scratch/.dotnet"); var autobuilder = CreateAutoBuilder(false, dotnetVersion: "2.1.3"); - TestAutobuilderScript(autobuilder, 0, 8); + TestAutobuilderScript(autobuilder, 0, 7); } private void TestDotnetVersionWindows(Action action, int commandsRun) diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs index 9dd441c5481..e9ee8a0e028 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs @@ -190,18 +190,23 @@ namespace Semmle.Autobuild.CSharp } else { + var dotnetInstallPath = builder.Actions.PathCombine(FileUtils.GetTemporaryWorkingDirectory( + builder.Actions.GetEnvironmentVariable, + builder.Options.Language.UpperCaseName, + out var shouldCleanUp), ".dotnet", "dotnet-install.sh"); + var downloadDotNetInstallSh = BuildScript.DownloadFile( "https://dot.net/v1/dotnet-install.sh", - "dotnet-install.sh", + dotnetInstallPath, e => builder.Log(Severity.Warning, $"Failed to download 'dotnet-install.sh': {e.Message}")); var chmod = new CommandBuilder(builder.Actions). RunCommand("chmod"). Argument("u+x"). - Argument("dotnet-install.sh"); + Argument(dotnetInstallPath); var install = new CommandBuilder(builder.Actions). - RunCommand("./dotnet-install.sh"). + RunCommand(dotnetInstallPath). Argument("--channel"). Argument("release"). Argument("--version"). @@ -209,11 +214,17 @@ namespace Semmle.Autobuild.CSharp Argument("--install-dir"). Argument(path); - var removeScript = new CommandBuilder(builder.Actions). - RunCommand("rm"). - Argument("dotnet-install.sh"); + var buildScript = downloadDotNetInstallSh & chmod.Script & install.Script; - return downloadDotNetInstallSh & chmod.Script & install.Script & BuildScript.Try(removeScript.Script); + if (shouldCleanUp) + { + var removeScript = new CommandBuilder(builder.Actions). + RunCommand("rm"). + Argument(dotnetInstallPath); + buildScript &= removeScript.Script; + } + + return buildScript; } }); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 1b8ed7c3366..bf9199ec8e5 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -52,7 +52,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching this.progressMonitor = new ProgressMonitor(logger); this.sourceDir = new DirectoryInfo(srcDir); - packageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName)); + packageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "packages")); legacyPackageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "legacypackages")); missingPackageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "missingpackages")); @@ -72,7 +72,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching this.progressMonitor.FindingFiles(srcDir); - var allFiles = GetAllFiles(); + var allFiles = GetAllFiles().ToList(); var binaryFileExtensions = new HashSet(new[] { ".dll", ".exe" }); // TODO: add more binary file extensions. var allNonBinaryFiles = allFiles.Where(f => !binaryFileExtensions.Contains(f.Extension.ToLowerInvariant())).ToList(); var smallNonBinaryFiles = allNonBinaryFiles.SelectSmallFiles(progressMonitor).SelectFileNames(); @@ -439,6 +439,25 @@ namespace Semmle.Extraction.CSharp.DependencyFetching files = files.Where(f => !f.FullName.StartsWith(options.DotNetPath, StringComparison.OrdinalIgnoreCase)); } + files = files.Where(f => + { + try + { + if (f.Exists) + { + return true; + } + + progressMonitor.Log(Severity.Warning, $"File {f.FullName} could not be processed."); + return false; + } + catch (Exception ex) + { + progressMonitor.Log(Severity.Warning, $"File {f.FullName} could not be processed: {ex.Message}"); + return false; + } + }); + files = new FilePathFilter(sourceDir, progressMonitor).Filter(files); return files; } @@ -448,7 +467,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// with this source tree. Use a SHA1 of the directory name. /// /// The full path of the temp directory. - private static string ComputeTempDirectory(string srcDir, string packages = "packages") + private static string ComputeTempDirectory(string srcDir, string subfolderName) { var bytes = Encoding.Unicode.GetBytes(srcDir); var sha = SHA1.HashData(bytes); @@ -456,7 +475,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching foreach (var b in sha.Take(8)) sb.AppendFormat("{0:x2}", b); - return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out var _), "GitHub", packages, sb.ToString()); + return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out var _), sb.ToString(), subfolderName); } /// @@ -704,7 +723,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching Parallel.ForEach(notYetDownloadedPackages, new ParallelOptions { MaxDegreeOfParallelism = options.Threads }, package => { progressMonitor.NugetInstall(package); - using var tempDir = new TemporaryDirectory(ComputeTempDirectory(package)); + using var tempDir = new TemporaryDirectory(ComputeTempDirectory(package, "missingpackages_workingdir")); var success = dotnet.New(tempDir.DirInfo.FullName); if (!success) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp.StubGenerator/StubVisitor.cs b/csharp/extractor/Semmle.Extraction.CSharp.StubGenerator/StubVisitor.cs index 983175f4c17..56a20473fa3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.StubGenerator/StubVisitor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.StubGenerator/StubVisitor.cs @@ -80,11 +80,11 @@ internal sealed class StubVisitor : SymbolVisitor stubWriter.Write(explicitInterfaceType.GetQualifiedName()); stubWriter.Write('.'); if (writeName) - stubWriter.Write(explicitInterfaceSymbol.GetName()); + stubWriter.Write(EscapeIdentifier(explicitInterfaceSymbol.GetName())); } else if (writeName) { - stubWriter.Write(symbol.GetName()); + stubWriter.Write(EscapeIdentifier(symbol.GetName())); } } @@ -557,6 +557,9 @@ internal sealed class StubVisitor : SymbolVisitor }); } + private static bool ExcludeMethod(IMethodSymbol symbol) => + symbol.Name == "$"; + private void StubMethod(IMethodSymbol symbol, IMethodSymbol? explicitInterfaceSymbol, IMethodSymbol? baseCtor) { var methodKind = explicitInterfaceSymbol is null ? symbol.MethodKind : explicitInterfaceSymbol.MethodKind; @@ -568,7 +571,7 @@ internal sealed class StubVisitor : SymbolVisitor MethodKind.Ordinary }; - if (!relevantMethods.Contains(methodKind)) + if (!relevantMethods.Contains(methodKind) || ExcludeMethod(symbol)) return; StubAttributes(symbol.GetAttributes()); diff --git a/csharp/extractor/Semmle.Extraction.Tests/StubGenerator.cs b/csharp/extractor/Semmle.Extraction.Tests/StubGenerator.cs index ea60c60bad6..3fcda88bc32 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/StubGenerator.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/StubGenerator.cs @@ -76,6 +76,26 @@ public int M1(ref readonly Guid guid) => throw null; Assert.Equal(expected, stub); } + [Fact] + public void StubGeneratorEscapeMethodName() + { + // Setup + const string source = @" +public class MyTest { + public int @default() { return 0; } +}"; + + // Execute + var stub = GenerateStub(source); + + // Verify + const string expected = @"public class MyTest { +public int @default() => throw null; +} +"; + Assert.Equal(expected, stub); + } + private static string GenerateStub(string source) { var st = CSharpSyntaxTree.ParseText(source); diff --git a/csharp/extractor/Semmle.Util/FileUtils.cs b/csharp/extractor/Semmle.Util/FileUtils.cs index 5cf38e6b48e..3315c3e705e 100644 --- a/csharp/extractor/Semmle.Util/FileUtils.cs +++ b/csharp/extractor/Semmle.Util/FileUtils.cs @@ -144,20 +144,26 @@ namespace Semmle.Util return nested; } + private static readonly Lazy tempFolderPath = new Lazy(() => + { + var tempPath = Path.GetTempPath(); + var name = Guid.NewGuid().ToString("N").ToUpper(); + var tempFolder = Path.Combine(tempPath, "GitHub", name); + Directory.CreateDirectory(tempFolder); + return tempFolder; + }); + public static string GetTemporaryWorkingDirectory(Func getEnvironmentVariable, string lang, out bool shouldCleanUp) { - shouldCleanUp = false; var tempFolder = getEnvironmentVariable($"CODEQL_EXTRACTOR_{lang}_SCRATCH_DIR"); - - if (string.IsNullOrEmpty(tempFolder)) + if (!string.IsNullOrEmpty(tempFolder)) { - var tempPath = Path.GetTempPath(); - var name = Guid.NewGuid().ToString("N").ToUpper(); - tempFolder = Path.Combine(tempPath, "GitHub", name); - shouldCleanUp = true; + shouldCleanUp = false; + return tempFolder; } - return tempFolder; + shouldCleanUp = true; + return tempFolderPath.Value; } public static string GetTemporaryWorkingDirectory(out bool shouldCleanUp) => diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index cebd2a51e84..881ef60c7c7 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.5 + +No user-facing changes. + ## 1.7.4 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.5.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.5.md new file mode 100644 index 00000000000..f17d9279e0d --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.5.md @@ -0,0 +1,3 @@ +## 1.7.5 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index f4f3a4d5120..83aebd7c12a 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.4 +lastReleaseVersion: 1.7.5 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index affb356bca6..a2969f590b7 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.5-dev +version: 1.7.6-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index cebd2a51e84..881ef60c7c7 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.5 + +No user-facing changes. + ## 1.7.4 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.5.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.5.md new file mode 100644 index 00000000000..f17d9279e0d --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.5.md @@ -0,0 +1,3 @@ +## 1.7.5 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index f4f3a4d5120..83aebd7c12a 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.4 +lastReleaseVersion: 1.7.5 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 0a318269550..9c9fb4bc5fc 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.5-dev +version: 1.7.6-dev groups: - csharp - solorigate diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.ql b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.ql index 91ee82c1c7a..82cea3528a6 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.ql +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.ql @@ -4,10 +4,11 @@ private string getPath(Assembly a) { not a.getCompilation().getOutputAssembly() = a and exists(string s | s = a.getFile().getAbsolutePath() | result = - s.substring(s.indexOf("GitHub/packages/") + "GitHub/packages/".length() + 16, s.length()) + s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + + "/packages".length(), s.length()) or result = s and - not exists(s.indexOf("GitHub/packages/")) + not exists(s.indexOf("test-db/working/")) ) } diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/Program.cs b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/Program.cs new file mode 100644 index 00000000000..39a9e95bb6e --- /dev/null +++ b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/Program.cs @@ -0,0 +1,6 @@ +class Program +{ + static void Main(string[] args) + { + } +} \ No newline at end of file diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/global.json b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/global.json new file mode 100644 index 00000000000..48e1c84489a --- /dev/null +++ b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "8.0.100" + } +} diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.csproj b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.csproj new file mode 100644 index 00000000000..a269962b552 --- /dev/null +++ b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.csproj @@ -0,0 +1,8 @@ + + + + Exe + net8.0 + + + diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py new file mode 100644 index 00000000000..2a7f375abba --- /dev/null +++ b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py @@ -0,0 +1,8 @@ +from create_database_utils import * + +path = b'\xd2abcd.cs' + +with open(path, 'w') as file: + file.write('class X { }\n') + +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql index 91ee82c1c7a..82cea3528a6 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql @@ -4,10 +4,11 @@ private string getPath(Assembly a) { not a.getCompilation().getOutputAssembly() = a and exists(string s | s = a.getFile().getAbsolutePath() | result = - s.substring(s.indexOf("GitHub/packages/") + "GitHub/packages/".length() + 16, s.length()) + s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + + "/packages".length(), s.length()) or result = s and - not exists(s.indexOf("GitHub/packages/")) + not exists(s.indexOf("test-db/working/")) ) } diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql index 91ee82c1c7a..82cea3528a6 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql @@ -4,10 +4,11 @@ private string getPath(Assembly a) { not a.getCompilation().getOutputAssembly() = a and exists(string s | s = a.getFile().getAbsolutePath() | result = - s.substring(s.indexOf("GitHub/packages/") + "GitHub/packages/".length() + 16, s.length()) + s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + + "/packages".length(), s.length()) or result = s and - not exists(s.indexOf("GitHub/packages/")) + not exists(s.indexOf("test-db/working/")) ) } diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql index 2170aef803f..e07e7c55e7d 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql @@ -4,19 +4,9 @@ private string getPath(Assembly a) { not a.getCompilation().getOutputAssembly() = a and exists(string s | s = a.getFile().getAbsolutePath() | result = - s.substring(s.indexOf("GitHub/packages/") + "GitHub/packages/".length() + 16, s.length()) - or - result = - s.substring(s.indexOf("GitHub/legacypackages/") + "GitHub/legacypackages/".length() + 16, - s.length()) - // TODO: excluding all other assemblies from the test result as mono installations seem problematic on ARM runners. - // or - // result = s.substring(s.indexOf("lib/mono/") + "lib/mono/".length(), s.length()) - // or - // result = s and - // not exists(s.indexOf("GitHub/packages/")) and - // not exists(s.indexOf("GitHub/legacypackages/")) and - // not exists(s.indexOf("lib/mono/")) + s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + + "/legacypackages".length(), s.length()) + // TODO: include all other assemblies from the test results. Initially disable because mono installations were problematic on ARM runners. ) } diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql b/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql index 91ee82c1c7a..82cea3528a6 100644 --- a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql +++ b/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql @@ -4,10 +4,11 @@ private string getPath(Assembly a) { not a.getCompilation().getOutputAssembly() = a and exists(string s | s = a.getFile().getAbsolutePath() | result = - s.substring(s.indexOf("GitHub/packages/") + "GitHub/packages/".length() + 16, s.length()) + s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + + "/packages".length(), s.length()) or result = s and - not exists(s.indexOf("GitHub/packages/")) + not exists(s.indexOf("test-db/working/")) ) } diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 09826df60f4..fe7cf2a05a5 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.5 + +No user-facing changes. + ## 0.8.4 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/released/0.8.5.md b/csharp/ql/lib/change-notes/released/0.8.5.md new file mode 100644 index 00000000000..cb2a467c35b --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.8.5.md @@ -0,0 +1,3 @@ +## 0.8.5 + +No user-facing changes. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 32eff3dc9f3..cbe6bc6b7c6 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.4 +lastReleaseVersion: 0.8.5 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 8cc4f6e56a9..4afc1644ba1 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.5-dev +version: 0.8.6-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 06f83675355..0318549742f 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.5 + +No user-facing changes. + ## 0.8.4 ### Minor Analysis Improvements diff --git a/csharp/ql/src/Security Features/CWE-079/XSS.qhelp b/csharp/ql/src/Security Features/CWE-079/XSS.qhelp index 409be1030e7..a6183e13c8e 100644 --- a/csharp/ql/src/Security Features/CWE-079/XSS.qhelp +++ b/csharp/ql/src/Security Features/CWE-079/XSS.qhelp @@ -11,17 +11,24 @@ without properly sanitizing the input first, allows for a cross-site scripting v -

    To guard against cross-site scripting, consider using contextual output encoding/escaping before -writing user input to the page, or one of the other solutions that are mentioned in the -references.

    +

    +To guard against cross-site scripting, consider using a library that provides suitable encoding +functionality, such as the System.Net.WebUtility class, to sanitize the untrusted input before writing it to the page. +For other possible solutions, see the references. +

    -

    The following example shows the page parameter being written directly to the server error page, -leaving the website vulnerable to cross-site scripting.

    - - +

    +The following example shows the page parameter being written directly to the server error page, +leaving the website vulnerable to cross-site scripting. +

    + +

    +Sanitizing the user-controlled data using the WebUtility.HtmlEncode method prevents the vulnerability: +

    +
    @@ -36,6 +43,5 @@ OWASP: Wikipedia: Cross-site scripting. - diff --git a/csharp/ql/src/Security Features/CWE-079/XSS.cs b/csharp/ql/src/Security Features/CWE-079/XSSBad.cs similarity index 100% rename from csharp/ql/src/Security Features/CWE-079/XSS.cs rename to csharp/ql/src/Security Features/CWE-079/XSSBad.cs diff --git a/csharp/ql/src/Security Features/CWE-079/XSSGood.cs b/csharp/ql/src/Security Features/CWE-079/XSSGood.cs new file mode 100644 index 00000000000..af719488a7c --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-079/XSSGood.cs @@ -0,0 +1,13 @@ +using System; +using System.Web; +using System.Net; + +public class XSSHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext ctx) + { + string page = WebUtility.HtmlEncode(ctx.Request.QueryString["page"]); + ctx.Response.Write( + "The page \"" + page + "\" was not found."); + } +} diff --git a/csharp/ql/src/Telemetry/ExtractorInformation.ql b/csharp/ql/src/Telemetry/ExtractorInformation.ql new file mode 100644 index 00000000000..99ef23e8385 --- /dev/null +++ b/csharp/ql/src/Telemetry/ExtractorInformation.ql @@ -0,0 +1,195 @@ +/** + * @name C# extraction information + * @description Information about the extraction for a C# database + * @kind metric + * @tags summary telemetry + * @id cs/telemetry/extraction-information + */ + +import csharp +import semmle.code.csharp.commons.Diagnostics + +predicate fileCount(string key, int value) { + key = "Number of files" and + value = strictcount(File f) +} + +predicate fileCountByExtension(string key, int value) { + exists(string extension | + key = "Number of files with extension " + extension and + value = strictcount(File f | f.getExtension() = extension) + ) +} + +predicate totalNumberOfLines(string key, int value) { + key = "Total number of lines" and + value = strictsum(File f | any() | f.getNumberOfLines()) +} + +predicate numberOfLinesOfCode(string key, int value) { + key = "Number of lines of code" and + value = strictsum(File f | any() | f.getNumberOfLinesOfCode()) +} + +predicate totalNumberOfLinesByExtension(string key, int value) { + exists(string extension | + key = "Total number of lines with extension " + extension and + value = strictsum(File f | f.getExtension() = extension | f.getNumberOfLines()) + ) +} + +predicate numberOfLinesOfCodeByExtension(string key, int value) { + exists(string extension | + key = "Number of lines of code with extension " + extension and + value = strictsum(File f | f.getExtension() = extension | f.getNumberOfLinesOfCode()) + ) +} + +predicate extractorDiagnostics(string key, int value) { + exists(int severity | + key = "Number of diagnostics with severity " + severity.toString() and + value = strictcount(Diagnostic d | d.getSeverity() = severity) + ) +} + +CompilerError getAmbiguityCompilerError() { + result.getSeverity() >= 3 and + result.getTag() = ["CS0101", "CS0104", "CS0111", "CS0121", "CS0229"] +} + +predicate numberOfAmbiguityCompilerErrors(string key, int value) { + value = count(getAmbiguityCompilerError()) and + key = "Number of compiler reported ambiguity errors" +} + +predicate numberOfDistinctAmbiguityCompilerErrorMessages(string key, int value) { + value = count(getAmbiguityCompilerError().getFullMessage()) and + key = "Number of compiler reported ambiguity error messages" +} + +predicate extractionIsStandalone(string key, int value) { + ( + value = 1 and + extractionIsStandalone() + or + value = 0 and + not extractionIsStandalone() + ) and + key = "Is buildless extraction" +} + +signature module StatsSig { + int getNumberOfOk(); + + int getNumberOfNotOk(); + + string getOkText(); + + string getNotOkText(); +} + +module ReportStats { + predicate numberOfOk(string key, int value) { + value = Stats::getNumberOfOk() and + key = "Number of " + Stats::getOkText() + } + + predicate numberOfNotOk(string key, int value) { + value = Stats::getNumberOfNotOk() and + key = "Number of " + Stats::getNotOkText() + } + + predicate percentageOfOk(string key, float value) { + value = Stats::getNumberOfOk() * 100.0 / (Stats::getNumberOfOk() + Stats::getNumberOfNotOk()) and + key = "Percentage of " + Stats::getOkText() + } +} + +module CallTargetStats implements StatsSig { + int getNumberOfOk() { result = count(Call c | exists(c.getTarget())) } + + int getNumberOfNotOk() { result = count(Call c | not exists(c.getTarget())) } + + string getOkText() { result = "calls with call target" } + + string getNotOkText() { result = "calls with missing call target" } +} + +module ExprTypeStats implements StatsSig { + int getNumberOfOk() { result = count(Expr e | not e.getType() instanceof UnknownType) } + + int getNumberOfNotOk() { result = count(Expr e | e.getType() instanceof UnknownType) } + + string getOkText() { result = "expressions with known type" } + + string getNotOkText() { result = "expressions with unknown type" } +} + +module TypeMentionTypeStats implements StatsSig { + int getNumberOfOk() { result = count(TypeMention t | not t.getType() instanceof UnknownType) } + + int getNumberOfNotOk() { result = count(TypeMention t | t.getType() instanceof UnknownType) } + + string getOkText() { result = "type mentions with known type" } + + string getNotOkText() { result = "type mentions with unknown type" } +} + +module AccessTargetStats implements StatsSig { + int getNumberOfOk() { result = count(Access a | exists(a.getTarget())) } + + int getNumberOfNotOk() { result = count(Access a | not exists(a.getTarget())) } + + string getOkText() { result = "access with target" } + + string getNotOkText() { result = "access with missing target" } +} + +module ExprStats implements StatsSig { + int getNumberOfOk() { result = count(Expr e | not e instanceof @unknown_expr) } + + int getNumberOfNotOk() { result = count(Expr e | e instanceof @unknown_expr) } + + string getOkText() { result = "expressions with known kind" } + + string getNotOkText() { result = "expressions with unknown kind" } +} + +module CallTargetStatsReport = ReportStats; + +module ExprTypeStatsReport = ReportStats; + +module TypeMentionTypeStatsReport = ReportStats; + +module AccessTargetStatsReport = ReportStats; + +module ExprStatsReport = ReportStats; + +from string key, float value +where + fileCount(key, value) or + fileCountByExtension(key, value) or + totalNumberOfLines(key, value) or + numberOfLinesOfCode(key, value) or + totalNumberOfLinesByExtension(key, value) or + numberOfLinesOfCodeByExtension(key, value) or + extractorDiagnostics(key, value) or + numberOfAmbiguityCompilerErrors(key, value) or + numberOfDistinctAmbiguityCompilerErrorMessages(key, value) or + extractionIsStandalone(key, value) or + CallTargetStatsReport::numberOfOk(key, value) or + CallTargetStatsReport::numberOfNotOk(key, value) or + CallTargetStatsReport::percentageOfOk(key, value) or + ExprTypeStatsReport::numberOfOk(key, value) or + ExprTypeStatsReport::numberOfNotOk(key, value) or + ExprTypeStatsReport::percentageOfOk(key, value) or + TypeMentionTypeStatsReport::numberOfOk(key, value) or + TypeMentionTypeStatsReport::numberOfNotOk(key, value) or + TypeMentionTypeStatsReport::percentageOfOk(key, value) or + AccessTargetStatsReport::numberOfOk(key, value) or + AccessTargetStatsReport::numberOfNotOk(key, value) or + AccessTargetStatsReport::percentageOfOk(key, value) or + ExprStatsReport::numberOfOk(key, value) or + ExprStatsReport::numberOfNotOk(key, value) or + ExprStatsReport::percentageOfOk(key, value) +select key, value diff --git a/csharp/ql/src/change-notes/released/0.8.5.md b/csharp/ql/src/change-notes/released/0.8.5.md new file mode 100644 index 00000000000..cb2a467c35b --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.8.5.md @@ -0,0 +1,3 @@ +## 0.8.5 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 32eff3dc9f3..cbe6bc6b7c6 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.4 +lastReleaseVersion: 0.8.5 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 8c65f6ad44c..006a95aa0f0 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.5-dev +version: 0.8.6-dev groups: - csharp - queries diff --git a/csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll b/csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll index 31eb497b44c..6b2a6fb82fb 100644 --- a/csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll +++ b/csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll @@ -7,7 +7,7 @@ private import ModelEditor * A class of effectively public callables from source code. */ class PublicEndpointFromSource extends Endpoint { - PublicEndpointFromSource() { this.fromSource() and not this.getFile() instanceof TestFile } + PublicEndpointFromSource() { this.fromSource() and not this.getFile() instanceof TestRelatedFile } override predicate isSource() { this instanceof SourceCallable } diff --git a/csharp/ql/src/utils/modeleditor/ModelEditor.qll b/csharp/ql/src/utils/modeleditor/ModelEditor.qll index 44d16707c12..bdb0760da38 100644 --- a/csharp/ql/src/utils/modeleditor/ModelEditor.qll +++ b/csharp/ql/src/utils/modeleditor/ModelEditor.qll @@ -110,9 +110,9 @@ string supportedType(Endpoint endpoint) { } string methodClassification(Call method) { - method.getFile() instanceof TestFile and result = "test" + method.getFile() instanceof TestRelatedFile and result = "test" or - not method.getFile() instanceof TestFile and + not method.getFile() instanceof TestRelatedFile and result = "source" } @@ -129,3 +129,13 @@ private string qualifiedTypeName(string namespace, Type t) { private string qualifiedCallableName(string namespace, string type, Callable c) { exists(string name | hasQualifiedMethodName(c, namespace, type, name) | result = name) } + +/** A file that is either a test file or is only used in tests. */ +class TestRelatedFile extends File { + TestRelatedFile() { + this instanceof TestFile + or + this.getAbsolutePath().matches(["%/test/%", "%/tests/%"]) and + not this.getAbsolutePath().matches("%/ql/test/%") // allows our test cases to work + } +} diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 821f493e9b0..e69e0cd4982 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -931,6 +931,11 @@ summary | Microsoft.CSharp.RuntimeBinder;Binder;false;SetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;df-generated | | Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;df-generated | | Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;CSharpCodeProvider;(System.Collections.Generic.IDictionary);;Argument[0].Element;Argument[this];taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;CreateCompiler;();;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;CreateGenerator;();;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | | Microsoft.EntityFrameworkCore;DbSet;false;Add;(TEntity);;Argument[0];Argument[this].Element;value;manual | | Microsoft.EntityFrameworkCore;DbSet;false;AddAsync;(TEntity,System.Threading.CancellationToken);;Argument[0];Argument[this].Element;value;manual | | Microsoft.EntityFrameworkCore;DbSet;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].WithElement;Argument[this];value;manual | @@ -1739,10 +1744,50 @@ summary | Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Argument[this].Element;ReturnValue;value;manual | | Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Argument[this].Element;ReturnValue;value;manual | | Microsoft.VisualBasic;Collection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | +| Microsoft.VisualBasic;VBCodeProvider;false;CreateCompiler;();;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;false;CreateGenerator;();;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;false;VBCodeProvider;(System.Collections.Generic.IDictionary);;Argument[0].Element;Argument[this];taint;df-generated | | Microsoft.Win32.SafeHandles;SafeFileHandle;false;SafeFileHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | Microsoft.Win32.SafeHandles;SafePipeHandle;false;SafePipeHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | Microsoft.Win32.SafeHandles;SafeProcessHandle;false;SafeProcessHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | Microsoft.Win32.SafeHandles;SafeWaitHandle;false;SafeWaitHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| Microsoft.Win32;PowerModeChangedEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.PowerModeChangedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SessionEndedEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.SessionEndedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SessionEndingEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.SessionEndingEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SessionSwitchEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.SessionSwitchEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_DisplaySettingsChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_DisplaySettingsChanging;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_EventsThreadShutdown;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_InstalledFontsChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_LowMemory;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_PaletteChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_PowerModeChanged;(Microsoft.Win32.PowerModeChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_SessionEnded;(Microsoft.Win32.SessionEndedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_SessionEnding;(Microsoft.Win32.SessionEndingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_SessionSwitch;(Microsoft.Win32.SessionSwitchEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_TimeChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_TimerElapsed;(Microsoft.Win32.TimerElapsedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_UserPreferenceChanged;(Microsoft.Win32.UserPreferenceChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_UserPreferenceChanging;(Microsoft.Win32.UserPreferenceChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_DisplaySettingsChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_DisplaySettingsChanging;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_EventsThreadShutdown;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_InstalledFontsChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_LowMemory;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_PaletteChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_PowerModeChanged;(Microsoft.Win32.PowerModeChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_SessionEnded;(Microsoft.Win32.SessionEndedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_SessionEnding;(Microsoft.Win32.SessionEndingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_SessionSwitch;(Microsoft.Win32.SessionSwitchEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_TimeChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_TimerElapsed;(Microsoft.Win32.TimerElapsedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_UserPreferenceChanged;(Microsoft.Win32.UserPreferenceChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_UserPreferenceChanging;(Microsoft.Win32.UserPreferenceChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;TimerElapsedEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.TimerElapsedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;UserPreferenceChangedEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.UserPreferenceChangedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;UserPreferenceChangingEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.UserPreferenceChangingEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Newtonsoft.Json.Linq;JArray;false;Add;(Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[this].Element;value;manual | | Newtonsoft.Json.Linq;JArray;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | Newtonsoft.Json.Linq;JArray;false;CopyTo;(Newtonsoft.Json.Linq.JToken[],System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | @@ -4016,6 +4061,72 @@ summary | System.Buffers;SequenceReader;false;get_Position;();;Argument[this];ReturnValue;taint;df-generated | | System.Buffers;SequenceReader;false;get_UnreadSequence;();;Argument[this];ReturnValue;taint;df-generated | | System.Buffers;SpanAction;false;BeginInvoke;(System.Span,TArg,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.CodeDom.Compiler;CodeCompiler;false;JoinStringArray;(System.String[],System.String);;Argument[0].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeCompiler;false;JoinStringArray;(System.String[],System.String);;Argument[1];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;CreateEscapedIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;CreateGenerator;(System.IO.TextWriter);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;CreateGenerator;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;CreateValidIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromCompileUnit;(System.CodeDom.CodeCompileUnit,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromExpression;(System.CodeDom.CodeExpression,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromStatement;(System.CodeDom.CodeStatement,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GetTypeOutput;(System.CodeDom.CodeTypeReference);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;CreateEscapedIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;CreateValidIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromCompileUnit;(System.CodeDom.CodeCompileUnit,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromExpression;(System.CodeDom.CodeExpression,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromStatement;(System.CodeDom.CodeStatement,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateTypes;(System.CodeDom.CodeNamespace);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GetTypeOutput;(System.CodeDom.CodeTypeReference);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_CurrentClass;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_CurrentMember;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_CurrentMemberName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_CurrentTypeName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_Options;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_Output;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;CreateEscapedIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;CreateValidIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;GenerateNamespace;(System.CodeDom.CodeNamespace);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;GetTypeOutput;(System.CodeDom.CodeTypeReference);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;false;get_BracingStyle;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;false;get_IndentString;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;Add;(System.CodeDom.Compiler.CompilerError);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;AddRange;(System.CodeDom.Compiler.CompilerErrorCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;AddRange;(System.CodeDom.Compiler.CompilerError[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;CompilerErrorCollection;(System.CodeDom.Compiler.CompilerErrorCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;CompilerErrorCollection;(System.CodeDom.Compiler.CompilerError[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;CopyTo;(System.CodeDom.Compiler.CompilerError[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;Insert;(System.Int32,System.CodeDom.Compiler.CompilerError);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;Remove;(System.CodeDom.Compiler.CompilerError);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;set_Item;(System.Int32,System.CodeDom.Compiler.CompilerError);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerInfo;false;GetExtensions;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerInfo;false;GetLanguages;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerInfo;false;get_CodeDomProviderType;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerParameters;false;set_TempFiles;(System.CodeDom.Compiler.TempFileCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerResults;false;get_CompiledAssembly;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerResults;false;set_CompiledAssembly;(System.Reflection.Assembly);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[4];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[1].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[4];ReturnValue;taint;df-generated | | System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | | System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | | System.CodeDom.Compiler;GeneratedCodeAttribute;false;get_Tool;();;Argument[this];ReturnValue;taint;df-generated | @@ -4069,6 +4180,355 @@ summary | System.CodeDom.Compiler;IndentedTextWriter;false;get_InnerWriter;();;Argument[this];ReturnValue;taint;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;false;get_NewLine;();;Argument[this];ReturnValue;taint;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;false;set_NewLine;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String,System.Boolean);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.CodeDom.Compiler;TempFileCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.CodeDom.Compiler;TempFileCollection;false;TempFileCollection;(System.String,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;get_BasePath;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;get_TempDir;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeArgumentReferenceExpression;false;CodeArgumentReferenceExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArgumentReferenceExpression;false;get_ParameterName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeArgumentReferenceExpression;false;set_ParameterName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;get_Initializers;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;set_CreateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttachEventStatement;false;CodeAttachEventStatement;(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttachEventStatement;false;set_Event;(System.CodeDom.CodeEventReferenceExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgument;false;CodeAttributeArgument;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgument;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeArgument;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;Add;(System.CodeDom.CodeAttributeArgument);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;AddRange;(System.CodeDom.CodeAttributeArgumentCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;AddRange;(System.CodeDom.CodeAttributeArgument[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;CodeAttributeArgumentCollection;(System.CodeDom.CodeAttributeArgumentCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;CodeAttributeArgumentCollection;(System.CodeDom.CodeAttributeArgument[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;CopyTo;(System.CodeDom.CodeAttributeArgument[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;Insert;(System.Int32,System.CodeDom.CodeAttributeArgument);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;Remove;(System.CodeDom.CodeAttributeArgument);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;set_Item;(System.Int32,System.CodeDom.CodeAttributeArgument);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeAttributeArgument[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeAttributeArgument[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String,System.CodeDom.CodeAttributeArgument[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String,System.CodeDom.CodeAttributeArgument[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;get_Arguments;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;get_AttributeType;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;Add;(System.CodeDom.CodeAttributeDeclaration);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;AddRange;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;AddRange;(System.CodeDom.CodeAttributeDeclaration[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;CodeAttributeDeclarationCollection;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;CodeAttributeDeclarationCollection;(System.CodeDom.CodeAttributeDeclaration[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;CopyTo;(System.CodeDom.CodeAttributeDeclaration[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;Insert;(System.Int32,System.CodeDom.CodeAttributeDeclaration);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;Remove;(System.CodeDom.CodeAttributeDeclaration);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;set_Item;(System.Int32,System.CodeDom.CodeAttributeDeclaration);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.Type,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCastExpression;false;set_TargetType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference,System.CodeDom.CodeStatement[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference,System.CodeDom.CodeStatement[]);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;get_LocalName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeCatchClause;false;set_CatchExceptionType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;set_LocalName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;Add;(System.CodeDom.CodeCatchClause);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;AddRange;(System.CodeDom.CodeCatchClauseCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;AddRange;(System.CodeDom.CodeCatchClause[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;CodeCatchClauseCollection;(System.CodeDom.CodeCatchClauseCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;CodeCatchClauseCollection;(System.CodeDom.CodeCatchClause[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;CopyTo;(System.CodeDom.CodeCatchClause[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;Insert;(System.Int32,System.CodeDom.CodeCatchClause);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;Remove;(System.CodeDom.CodeCatchClause);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;set_Item;(System.Int32,System.CodeDom.CodeCatchClause);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeChecksumPragma;false;CodeChecksumPragma;(System.String,System.Guid,System.Byte[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeChecksumPragma;false;get_FileName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeChecksumPragma;false;set_FileName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeComment;false;CodeComment;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeComment;false;CodeComment;(System.String,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeComment;false;get_Text;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeComment;false;set_Text;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;Add;(System.CodeDom.CodeCommentStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;AddRange;(System.CodeDom.CodeCommentStatementCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;AddRange;(System.CodeDom.CodeCommentStatement[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;CodeCommentStatementCollection;(System.CodeDom.CodeCommentStatementCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;CodeCommentStatementCollection;(System.CodeDom.CodeCommentStatement[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;CopyTo;(System.CodeDom.CodeCommentStatement[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;Insert;(System.Int32,System.CodeDom.CodeCommentStatement);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;Remove;(System.CodeDom.CodeCommentStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;set_Item;(System.Int32,System.CodeDom.CodeCommentStatement);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeDefaultValueExpression;false;CodeDefaultValueExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDefaultValueExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;CodeDelegateCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;CodeDelegateCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression,System.String);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;get_MethodName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;set_DelegateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;set_MethodName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;Add;(System.CodeDom.CodeDirective);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;AddRange;(System.CodeDom.CodeDirectiveCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;AddRange;(System.CodeDom.CodeDirective[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;CodeDirectiveCollection;(System.CodeDom.CodeDirectiveCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;CodeDirectiveCollection;(System.CodeDom.CodeDirective[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;CopyTo;(System.CodeDom.CodeDirective[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;Insert;(System.Int32,System.CodeDom.CodeDirective);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;Remove;(System.CodeDom.CodeDirective);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;set_Item;(System.Int32,System.CodeDom.CodeDirective);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeEventReferenceExpression;false;CodeEventReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeEventReferenceExpression;false;get_EventName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeEventReferenceExpression;false;set_EventName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;Add;(System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;AddRange;(System.CodeDom.CodeExpressionCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;AddRange;(System.CodeDom.CodeExpression[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;CodeExpressionCollection;(System.CodeDom.CodeExpressionCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;CodeExpressionCollection;(System.CodeDom.CodeExpression[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;CopyTo;(System.CodeDom.CodeExpression[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;Insert;(System.Int32,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;Remove;(System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;set_Item;(System.Int32,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeFieldReferenceExpression;false;CodeFieldReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeFieldReferenceExpression;false;get_FieldName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeFieldReferenceExpression;false;set_FieldName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeGotoStatement;false;CodeGotoStatement;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeGotoStatement;false;get_Label;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeGotoStatement;false;set_Label;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLabeledStatement;false;CodeLabeledStatement;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLabeledStatement;false;CodeLabeledStatement;(System.String,System.CodeDom.CodeStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLabeledStatement;false;get_Label;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeLabeledStatement;false;set_Label;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLinePragma;false;CodeLinePragma;(System.String,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLinePragma;false;get_FileName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeLinePragma;false;set_FileName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberEvent;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.Type,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.Type,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberMethod;false;add_PopulateImplementationTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;add_PopulateParameters;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;add_PopulateStatements;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;get_ImplementationTypes;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeMemberMethod;false;get_Parameters;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeMemberMethod;false;get_Statements;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeMemberMethod;false;remove_PopulateImplementationTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;remove_PopulateParameters;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;remove_PopulateStatements;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;set_ReturnType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberProperty;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodInvokeExpression;false;CodeMethodInvokeExpression;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeExpression[]);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodInvokeExpression;false;CodeMethodInvokeExpression;(System.CodeDom.CodeMethodReferenceExpression,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodInvokeExpression;false;set_Method;(System.CodeDom.CodeMethodReferenceExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;false;CodeMethodReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;false;CodeMethodReferenceExpression;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeTypeReference[]);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;false;get_MethodName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;false;set_MethodName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespace;false;CodeNamespace;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespace;false;add_PopulateComments;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;add_PopulateImports;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;add_PopulateTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;get_Comments;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespace;false;get_Imports;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespace;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespace;false;get_Types;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespace;false;remove_PopulateComments;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;remove_PopulateImports;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;remove_PopulateTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;Add;(System.CodeDom.CodeNamespace);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;AddRange;(System.CodeDom.CodeNamespaceCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;AddRange;(System.CodeDom.CodeNamespace[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;CodeNamespaceCollection;(System.CodeDom.CodeNamespaceCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;CodeNamespaceCollection;(System.CodeDom.CodeNamespace[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;CopyTo;(System.CodeDom.CodeNamespace[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;Insert;(System.Int32,System.CodeDom.CodeNamespace);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;Remove;(System.CodeDom.CodeNamespace);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;set_Item;(System.Int32,System.CodeDom.CodeNamespace);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImport;false;CodeNamespaceImport;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImport;false;get_Namespace;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespaceImport;false;set_Namespace;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;Add;(System.CodeDom.CodeNamespaceImport);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;Add;(System.Object);;Argument[0];Argument[this].Element;value;manual | +| System.CodeDom;CodeNamespaceImportCollection;false;AddRange;(System.CodeDom.CodeNamespaceImport[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.CodeDom;CodeNamespaceImportCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.CodeDom;CodeNamespaceImportCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.CodeDom;CodeNamespaceImportCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | +| System.CodeDom;CodeNamespaceImportCollection;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | +| System.CodeDom;CodeNamespaceImportCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;set_Item;(System.Int32,System.CodeDom.CodeNamespaceImport);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | +| System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeObjectCreateExpression;false;set_CreateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.Type,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.Type,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;set_CustomAttributes;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Add;(System.CodeDom.CodeParameterDeclarationExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;AddRange;(System.CodeDom.CodeParameterDeclarationExpressionCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;AddRange;(System.CodeDom.CodeParameterDeclarationExpression[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CodeParameterDeclarationExpressionCollection;(System.CodeDom.CodeParameterDeclarationExpressionCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CodeParameterDeclarationExpressionCollection;(System.CodeDom.CodeParameterDeclarationExpression[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CopyTo;(System.CodeDom.CodeParameterDeclarationExpression[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Insert;(System.Int32,System.CodeDom.CodeParameterDeclarationExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Remove;(System.CodeDom.CodeParameterDeclarationExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;set_Item;(System.Int32,System.CodeDom.CodeParameterDeclarationExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodePropertyReferenceExpression;false;CodePropertyReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodePropertyReferenceExpression;false;get_PropertyName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodePropertyReferenceExpression;false;set_PropertyName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeRegionDirective;false;CodeRegionDirective;(System.CodeDom.CodeRegionMode,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeRegionDirective;false;get_RegionText;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeRegionDirective;false;set_RegionText;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeRemoveEventStatement;false;CodeRemoveEventStatement;(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeRemoveEventStatement;false;CodeRemoveEventStatement;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeRemoveEventStatement;false;set_Event;(System.CodeDom.CodeEventReferenceExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetCompileUnit;false;CodeSnippetCompileUnit;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetCompileUnit;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeSnippetCompileUnit;false;set_Value;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetExpression;false;CodeSnippetExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetExpression;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeSnippetExpression;false;set_Value;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetStatement;false;CodeSnippetStatement;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetStatement;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeSnippetStatement;false;set_Value;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetTypeMember;false;CodeSnippetTypeMember;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetTypeMember;false;get_Text;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeSnippetTypeMember;false;set_Text;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;Add;(System.CodeDom.CodeStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;AddRange;(System.CodeDom.CodeStatementCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;AddRange;(System.CodeDom.CodeStatement[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;CodeStatementCollection;(System.CodeDom.CodeStatementCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;CodeStatementCollection;(System.CodeDom.CodeStatement[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;CopyTo;(System.CodeDom.CodeStatement[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;Insert;(System.Int32,System.CodeDom.CodeStatement);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;Remove;(System.CodeDom.CodeStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;set_Item;(System.Int32,System.CodeDom.CodeStatement);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclaration;false;CodeTypeDeclaration;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclaration;false;add_PopulateBaseTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeTypeDeclaration;false;add_PopulateMembers;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeTypeDeclaration;false;get_BaseTypes;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeDeclaration;false;get_Members;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeDeclaration;false;remove_PopulateBaseTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeTypeDeclaration;false;remove_PopulateMembers;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;Add;(System.CodeDom.CodeTypeDeclaration);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;AddRange;(System.CodeDom.CodeTypeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;AddRange;(System.CodeDom.CodeTypeDeclaration[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;CodeTypeDeclarationCollection;(System.CodeDom.CodeTypeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;CodeTypeDeclarationCollection;(System.CodeDom.CodeTypeDeclaration[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;CopyTo;(System.CodeDom.CodeTypeDeclaration[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeDeclaration);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;Remove;(System.CodeDom.CodeTypeDeclaration);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeDeclaration);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDelegate;false;CodeTypeDelegate;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDelegate;false;set_ReturnType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMember;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeMember;false;set_CustomAttributes;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMember;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;Add;(System.CodeDom.CodeTypeMember);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;AddRange;(System.CodeDom.CodeTypeMemberCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;AddRange;(System.CodeDom.CodeTypeMember[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;CodeTypeMemberCollection;(System.CodeDom.CodeTypeMemberCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;CodeTypeMemberCollection;(System.CodeDom.CodeTypeMember[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;CopyTo;(System.CodeDom.CodeTypeMember[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeMember);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;Remove;(System.CodeDom.CodeTypeMember);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeMember);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeOfExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameter;false;CodeTypeParameter;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameter;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeParameter;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;Add;(System.CodeDom.CodeTypeParameter);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;AddRange;(System.CodeDom.CodeTypeParameterCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;AddRange;(System.CodeDom.CodeTypeParameter[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;CodeTypeParameterCollection;(System.CodeDom.CodeTypeParameterCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;CodeTypeParameterCollection;(System.CodeDom.CodeTypeParameter[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;CopyTo;(System.CodeDom.CodeTypeParameter[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeParameter);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;Remove;(System.CodeDom.CodeTypeParameter);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeParameter);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.String,System.CodeDom.CodeTypeReferenceOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReference;false;get_BaseType;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeReference;false;set_BaseType;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;AddRange;(System.CodeDom.CodeTypeReferenceCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;AddRange;(System.CodeDom.CodeTypeReference[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;CodeTypeReferenceCollection;(System.CodeDom.CodeTypeReferenceCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;CodeTypeReferenceCollection;(System.CodeDom.CodeTypeReference[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;CopyTo;(System.CodeDom.CodeTypeReference[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeReference);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Remove;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeReference);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableReferenceExpression;false;CodeVariableReferenceExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableReferenceExpression;false;get_VariableName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeVariableReferenceExpression;false;set_VariableName;(System.String);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Concurrent;BlockingCollection;false;Add;(T);;Argument[0];Argument[this].Element;value;manual | | System.Collections.Concurrent;BlockingCollection;false;Add;(T,System.Threading.CancellationToken);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Concurrent;BlockingCollection;false;BlockingCollection;(System.Collections.Concurrent.IProducerConsumerCollection);;Argument[0].Element;Argument[this];taint;df-generated | @@ -5895,6 +6355,329 @@ summary | System.ComponentModel;WarningException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.ComponentModel;Win32Exception;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.ComponentModel;Win32Exception;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;GetConfigTypeName;(System.Type);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;GetStreamNameForConfigSource;(System.String,System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;GetStreamNameForConfigSource;(System.String,System.String);;Argument[1];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;InitForConfiguration;(System.String,System.String,System.String,System.Configuration.Internal.IInternalConfigRoot,System.Object[]);;Argument[4].Element;ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForRead;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForRead;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object);;Argument[1];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object,System.Boolean);;Argument[1];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object,System.Boolean);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;StartMonitoringStreamForChanges;(System.String,System.Configuration.Internal.StreamChangeCallback);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;StopMonitoringStreamForChanges;(System.String,System.Configuration.Internal.StreamChangeCallback);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigHost;true;StartMonitoringStreamForChanges;(System.String,System.Configuration.Internal.StreamChangeCallback);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigHost;true;StopMonitoringStreamForChanges;(System.String,System.Configuration.Internal.StreamChangeCallback);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigRoot;true;add_ConfigChanged;(System.Configuration.Internal.InternalConfigEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigRoot;true;add_ConfigRemoved;(System.Configuration.Internal.InternalConfigEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigRoot;true;remove_ConfigChanged;(System.Configuration.Internal.InternalConfigEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigRoot;true;remove_ConfigRemoved;(System.Configuration.Internal.InternalConfigEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;InternalConfigEventHandler;false;BeginInvoke;(System.Object,System.Configuration.Internal.InternalConfigEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;StreamChangeCallback;false;BeginInvoke;(System.String,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Provider;ProviderBase;true;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration.Provider;ProviderBase;true;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[this];taint;df-generated | +| System.Configuration.Provider;ProviderBase;true;get_Description;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration.Provider;ProviderBase;true;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration.Provider;ProviderCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration.Provider;ProviderCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Configuration.Provider;ProviderCollection;false;CopyTo;(System.Configuration.Provider.ProviderBase[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration.Provider;ProviderCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration.Provider;ProviderCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration.Provider;ProviderCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;AppSettingsReader;false;GetValue;(System.String,System.Type);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;AppSettingsSection;false;DeserializeElement;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;AppSettingsSection;false;GetRuntimeObject;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;AppSettingsSection;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;AppSettingsSection;false;get_File;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;AppSettingsSection;false;get_Settings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;ApplicationSettingsBase;(System.ComponentModel.IComponent,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;ApplicationSettingsBase;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;add_PropertyChanged;(System.ComponentModel.PropertyChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;add_SettingChanging;(System.Configuration.SettingChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;add_SettingsLoaded;(System.Configuration.SettingsLoadedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;add_SettingsSaving;(System.Configuration.SettingsSavingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;get_Context;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;get_PropertyValues;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;get_Providers;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;get_SettingsKey;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;remove_PropertyChanged;(System.ComponentModel.PropertyChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;remove_SettingChanging;(System.Configuration.SettingChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;remove_SettingsLoaded;(System.Configuration.SettingsLoadedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;remove_SettingsSaving;(System.Configuration.SettingsSavingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;set_SettingsKey;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;CallbackValidator;false;CallbackValidator;(System.Type,System.Configuration.ValidatorCallback);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration;CallbackValidatorAttribute;false;get_CallbackMethodName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CallbackValidatorAttribute;false;get_Type;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CallbackValidatorAttribute;false;get_ValidatorInstance;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CallbackValidatorAttribute;false;set_CallbackMethodName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;CallbackValidatorAttribute;false;set_Type;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ClientSettingsSection;false;get_Settings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;CommaDelimitedStringCollection;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;CommaDelimitedStringCollectionConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollectionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateCDataSection;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateComment;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateSignificantWhitespace;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateTextNode;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateWhitespace;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;Load;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;LoadSingleElement;(System.String,System.Xml.XmlTextReader);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;get_Filename;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;GetSectionGroup;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_AssemblyStringTransformer;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_RootSectionGroup;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_SectionGroups;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_Sections;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_TypeStringTransformer;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;set_AssemblyStringTransformer;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;Configuration;false;set_TypeStringTransformer;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;get_AddItemName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;get_ClearItemsName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;get_RemoveItemName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;set_AddItemName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;set_ClearItemsName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;set_RemoveItemName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElement;false;get_EvaluationContext;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElement;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElement;true;DeserializeElement;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElement;true;GetTransformedAssemblyString;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElement;true;GetTransformedTypeString;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElement;true;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElement;true;SerializeElement;(System.Xml.XmlWriter,System.Boolean);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElement;true;SerializeToXmlElement;(System.Xml.XmlWriter,System.String);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElement;true;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElement;true;get_ElementProperty;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;BaseAdd;(System.Configuration.ConfigurationElement,System.Boolean);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;ConfigurationElementCollection;(System.Collections.IComparer);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Configuration;ConfigurationElementCollection;false;CopyTo;(System.Configuration.ConfigurationElement[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration;ConfigurationElementCollection;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;SerializeElement;(System.Xml.XmlWriter,System.Boolean);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;get_AddElementName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;get_ClearElementName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;get_RemoveElementName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;set_AddElementName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;set_ClearElementName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;set_RemoveElementName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;true;BaseAdd;(System.Configuration.ConfigurationElement);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;true;BaseAdd;(System.Int32,System.Configuration.ConfigurationElement);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;ConfigurationErrorsException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;ConfigurationErrorsException;(System.String,System.Exception,System.String,System.Int32);;Argument[2];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;GetFilename;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;GetFilename;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;get_Errors;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;get_Filename;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;get_Message;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationException;false;ConfigurationException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationException;false;ConfigurationException;(System.String,System.Exception,System.String,System.Int32);;Argument[2];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationException;false;GetXmlNodeFilename;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationException;false;get_BareMessage;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationException;false;get_Filename;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationFileMap;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationLocation;false;OpenConfiguration;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConfigurationLockCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Configuration;ConfigurationLockCollection;false;CopyTo;(System.String[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration;ConfigurationLockCollection;false;SetFromList;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;get_AttributeList;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;ConfigurationManager;false;OpenExeConfiguration;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationManager;false;OpenMappedExeConfiguration;(System.Configuration.ExeConfigurationFileMap,System.Configuration.ConfigurationUserLevel);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationManager;false;OpenMappedExeConfiguration;(System.Configuration.ExeConfigurationFileMap,System.Configuration.ConfigurationUserLevel,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationManager;false;OpenMappedMachineConfiguration;(System.Configuration.ConfigurationFileMap);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationProperty;false;ConfigurationProperty;(System.String,System.Type,System.Object,System.ComponentModel.TypeConverter,System.Configuration.ConfigurationValidatorBase,System.Configuration.ConfigurationPropertyOptions,System.String);;Argument[3];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationProperty;false;get_Converter;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationPropertyCollection;false;Add;(System.Configuration.ConfigurationProperty);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationPropertyCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConfigurationPropertyCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Configuration;ConfigurationPropertyCollection;false;CopyTo;(System.Configuration.ConfigurationProperty[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;ConfigurationPropertyCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration;ConfigurationPropertyCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationPropertyCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSection;true;DeserializeSection;(System.Xml.XmlReader);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationSection;true;GetRuntimeObject;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;ConfigurationSectionCollection;false;Add;(System.String,System.Configuration.ConfigurationSection);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationSectionCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConfigurationSectionCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration;ConfigurationSectionCollection;false;GetKey;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroup;false;get_SectionGroups;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroup;false;get_Sections;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroup;false;get_Type;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroup;false;set_Type;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Add;(System.String,System.Configuration.ConfigurationSectionGroup);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Add;(System.String,System.Configuration.ConfigurationSectionGroup);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConfigurationSectionGroupCollection;false;CopyTo;(System.Configuration.ConfigurationSectionGroup[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Get;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Get;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration;ConfigurationSectionGroupCollection;false;GetKey;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettings;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettings;false;get_ConnectionString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettings;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettings;false;get_ProviderName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;false;Add;(System.Configuration.ConnectionStringSettings);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;false;BaseAdd;(System.Int32,System.Configuration.ConfigurationElement);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConnectionStringSettingsCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;false;set_Item;(System.Int32,System.Configuration.ConnectionStringSettings);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;ConnectionStringsSection;false;GetRuntimeObject;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;ConnectionStringsSection;false;get_ConnectionStrings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ContextInformation;false;get_HostingContext;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;DefaultSection;false;DeserializeSection;(System.Xml.XmlReader);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;DefaultSection;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;DefaultSection;false;SerializeSection;(System.Configuration.ConfigurationElement,System.String,System.Configuration.ConfigurationSaveMode);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;DefaultSettingValueAttribute;false;DefaultSettingValueAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;DefaultSettingValueAttribute;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;DictionarySectionHandler;false;Create;(System.Object,System.Object,System.Xml.XmlNode);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;DpapiProtectedConfigurationProvider;false;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;DpapiProtectedConfigurationProvider;false;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[this];taint;df-generated | +| System.Configuration;GenericEnumConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;GenericEnumConverter;false;GenericEnumConverter;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;IdnElement;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;IgnoreSection;false;DeserializeSection;(System.Xml.XmlReader);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;IgnoreSection;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;IgnoreSection;false;SerializeSection;(System.Configuration.ConfigurationElement,System.String,System.Configuration.ConfigurationSaveMode);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;InfiniteTimeSpanConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;InfiniteTimeSpanConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;IriParsingElement;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;KeyValueConfigurationCollection;false;Add;(System.Configuration.KeyValueConfigurationElement);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;KeyValueConfigurationCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;KeyValueConfigurationCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;KeyValueConfigurationElement;false;KeyValueConfigurationElement;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;KeyValueConfigurationElement;false;KeyValueConfigurationElement;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;KeyValueConfigurationElement;false;get_Key;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;KeyValueConfigurationElement;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;LocalFileSettingsProvider;false;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;LocalFileSettingsProvider;false;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[this];taint;df-generated | +| System.Configuration;LocalFileSettingsProvider;false;get_ApplicationName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;LocalFileSettingsProvider;false;set_ApplicationName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;NameValueConfigurationCollection;false;Add;(System.Configuration.NameValueConfigurationElement);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;NameValueConfigurationCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;NameValueConfigurationCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;NameValueConfigurationCollection;false;set_Item;(System.String,System.Configuration.NameValueConfigurationElement);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;NameValueConfigurationElement;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;NameValueConfigurationElement;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;NameValueFileSectionHandler;false;Create;(System.Object,System.Object,System.Xml.XmlNode);;Argument[2].Element;ReturnValue;taint;df-generated | +| System.Configuration;NameValueSectionHandler;false;Create;(System.Object,System.Object,System.Xml.XmlNode);;Argument[2].Element;ReturnValue;taint;df-generated | +| System.Configuration;PropertyInformation;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;PropertyInformationCollection;false;CopyTo;(System.Configuration.PropertyInformation[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;PropertyInformationCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration;PropertyInformationCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedConfigurationProviderCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedConfigurationSection;false;get_DefaultProvider;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedConfigurationSection;false;get_Providers;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedProviderSettings;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedProviderSettings;false;get_Providers;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettings;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ProviderSettings;false;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ProviderSettings;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettings;false;get_Parameters;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettings;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettings;false;get_Type;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettingsCollection;false;Add;(System.Configuration.ProviderSettings);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ProviderSettingsCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ProviderSettingsCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettingsCollection;false;set_Item;(System.Int32,System.Configuration.ProviderSettings);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;RegexStringValidator;false;RegexStringValidator;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SchemeSettingElement;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SchemeSettingElementCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;SectionInformation;false;get_ConfigSource;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SectionInformation;false;get_ProtectionProvider;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SectionInformation;false;get_Type;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SectionInformation;false;set_ConfigSource;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SectionInformation;false;set_Type;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[2];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[3];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;get_NewValue;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;get_SettingClass;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;get_SettingKey;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;get_SettingName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingChangingEventHandler;false;BeginInvoke;(System.Object,System.Configuration.SettingChangingEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Configuration;SettingElement;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingElement;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingElementCollection;false;Add;(System.Configuration.SettingElement);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;SettingElementCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;SettingElementCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;SettingValueElement;false;DeserializeElement;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingValueElement;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingValueElement;false;SerializeToXmlElement;(System.Xml.XmlWriter,System.String);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;SettingValueElement;false;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingValueElement;false;get_ValueXml;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingValueElement;false;set_ValueXml;(System.Xml.XmlNode);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[1].Element;Argument[this];taint;df-generated | +| System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[2].Element;Argument[this];taint;df-generated | +| System.Configuration;SettingsBase;false;Synchronized;(System.Configuration.SettingsBase);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_Context;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_PropertyValues;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_Providers;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsDescriptionAttribute;false;SettingsDescriptionAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsDescriptionAttribute;false;get_Description;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsGroupDescriptionAttribute;false;SettingsGroupDescriptionAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsGroupDescriptionAttribute;false;get_Description;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsGroupNameAttribute;false;SettingsGroupNameAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsGroupNameAttribute;false;get_GroupName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsLoadedEventArgs;false;SettingsLoadedEventArgs;(System.Configuration.SettingsProvider);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsLoadedEventArgs;false;get_Provider;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsLoadedEventHandler;false;BeginInvoke;(System.Object,System.Configuration.SettingsLoadedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Configuration;SettingsPropertyCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;SettingsPropertyCollection;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Configuration;SettingsPropertyCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration;SettingsPropertyCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;SettingsPropertyValue;false;get_PropertyValue;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyValue;false;get_SerializedValue;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyValue;false;set_PropertyValue;(System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsPropertyValue;false;set_SerializedValue;(System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsPropertyValueCollection;false;Add;(System.Configuration.SettingsPropertyValue);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsPropertyValueCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;SettingsPropertyValueCollection;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Configuration;SettingsPropertyValueCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Configuration;SettingsPropertyValueCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyValueCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;SettingsProviderAttribute;false;SettingsProviderAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsProviderAttribute;false;SettingsProviderAttribute;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsProviderAttribute;false;get_ProviderTypeName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsProviderCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsSavingEventHandler;false;BeginInvoke;(System.Object,System.ComponentModel.CancelEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Configuration;StringValidator;false;StringValidator;(System.Int32,System.Int32,System.String);;Argument[2];Argument[this];taint;df-generated | +| System.Configuration;SubclassTypeValidator;false;SubclassTypeValidator;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;TimeSpanValidator;false;TimeSpanValidator;(System.TimeSpan,System.TimeSpan,System.Boolean,System.Int64);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;TimeSpanValidator;false;TimeSpanValidator;(System.TimeSpan,System.TimeSpan,System.Boolean,System.Int64);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;TypeNameConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;UriSection;false;get_Idn;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;UriSection;false;get_IriParsing;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;UriSection;false;get_SchemeSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ValidatorCallback;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration;WhiteSpaceTrimStringConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;WhiteSpaceTrimStringConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Data.Common;DataAdapter;false;add_FillError;(System.Data.FillErrorEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Data.Common;DataAdapter;false;get_TableMappings;();;Argument[this];ReturnValue;taint;df-generated | | System.Data.Common;DataAdapter;false;remove_FillError;(System.Data.FillErrorEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | @@ -6118,13 +6901,480 @@ summary | System.Data.Common;RowUpdatingEventArgs;false;set_BaseCommand;(System.Data.IDbCommand);;Argument[0];Argument[this];taint;df-generated | | System.Data.Common;RowUpdatingEventArgs;false;set_Command;(System.Data.IDbCommand);;Argument[0];Argument[this];taint;df-generated | | System.Data.Common;RowUpdatingEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[this];taint;df-generated | -| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator`1.Current];value;manual | -| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;All;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Any;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;CrossApply;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;FullOuterJoin;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;InnerJoin;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func,System.Func);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;LeftOuterJoin;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OrderBy;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OrderBy;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OrderByDescending;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OrderByDescending;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OuterApply;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Select;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;SelectMany;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;SelectMany;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;SelectMany;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;ThenBy;(System.Data.Entity.Core.Common.CommandTrees.DbSortExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;ThenBy;(System.Data.Entity.Core.Common.CommandTrees.DbSortExpression,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;ThenByDescending;(System.Data.Entity.Core.Common.CommandTrees.DbSortExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;ThenByDescending;(System.Data.Entity.Core.Common.CommandTrees.DbSortExpression,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Where;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[16];Argument[16].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[15];Argument[15].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[14];Argument[14].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[13];Argument[13].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[12];Argument[12].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[11];Argument[11].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[10];Argument[10].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[9];Argument[9].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common;DbCommandDefinition;false;DbCommandDefinition;(System.Data.Common.DbCommand,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common;DbProviderServices;true;RegisterInfoMessageHandler;(System.Data.Common.DbConnection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.EntityClient;EntityCommand;false;ExecuteDbDataReaderAsync;(System.Data.CommandBehavior,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.Data.Entity.Core.EntityClient;EntityConnection;false;OpenAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | +| System.Data.Entity.Core.EntityClient;EntityConnectionStringBuilder;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Data.Entity.Core.EntityClient;EntityConnectionStringBuilder;false;get_Keys;();;Argument[this].Element.Property[System.Collections.Generic.KeyValuePair`2.Key];ReturnValue.Element;value;manual | +| System.Data.Entity.Core.EntityClient;EntityDataReader;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Core.EntityClient;EntityDataReader;false;GetProviderSpecificValue;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Data.Entity.Core.EntityClient;EntityDataReader;false;GetProviderSpecificValues;(System.Object[]);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Data.Entity.Core.EntityClient;EntityParameterCollection;false;Add;(System.Object);;Argument[0];Argument[this].Element;value;manual | +| System.Data.Entity.Core.EntityClient;EntityParameterCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[this].Element;value;manual | +| System.Data.Entity.Core.EntityClient;EntityParameterCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Data.Entity.Core.EntityClient;EntityParameterCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Data.Entity.Core.EntityClient;EntityParameterCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Core.EntityClient;EntityParameterCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | +| System.Data.Entity.Core.Metadata.Edm;CsdlSerializer;false;add_OnError;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;CsdlSerializer;false;remove_OnError;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;LoadFromAssembly;(System.Reflection.Assembly,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;ObjectItemCollection;false;LoadFromAssembly;(System.Reflection.Assembly,System.Data.Entity.Core.Metadata.Edm.EdmItemCollection,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;SsdlSerializer;false;add_OnError;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;SsdlSerializer;false;remove_OnError;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects.DataClasses;EntityCollection;false;Add;(TEntity);;Argument[0];Argument[this].Element;value;manual | +| System.Data.Entity.Core.Objects.DataClasses;EntityCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Data.Entity.Core.Objects.DataClasses;EntityCollection;false;CopyTo;(TEntity[],System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Data.Entity.Core.Objects.DataClasses;EntityCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator`1.Current];value;manual | +| System.Data.Entity.Core.Objects.DataClasses;EntityCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Core.Objects.DataClasses;RelatedEnd;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Core.Objects.DataClasses;RelatedEnd;false;add_AssociationChanged;(System.ComponentModel.CollectionChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects.DataClasses;RelatedEnd;false;remove_AssociationChanged;(System.ComponentModel.CollectionChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects.DataClasses;StructuralObject;false;add_PropertyChanged;(System.ComponentModel.PropertyChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects.DataClasses;StructuralObject;false;add_PropertyChanging;(System.ComponentModel.PropertyChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects.DataClasses;StructuralObject;false;remove_PropertyChanged;(System.ComponentModel.PropertyChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects.DataClasses;StructuralObject;false;remove_PropertyChanging;(System.ComponentModel.PropertyChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;LoadProperty;(TEntity,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;LoadProperty;(TEntity,System.Linq.Expressions.Expression>,System.Data.Entity.Core.Objects.MergeOption);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;add_ObjectMaterialized;(System.Data.Entity.Core.Objects.ObjectMaterializedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;add_SavingChanges;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;remove_ObjectMaterialized;(System.Data.Entity.Core.Objects.ObjectMaterializedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;remove_SavingChanges;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectMaterializedEventHandler;false;BeginInvoke;(System.Object,System.Data.Entity.Core.Objects.ObjectMaterializedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectParameterCollection;false;Add;(System.Data.Entity.Core.Objects.ObjectParameter);;Argument[0];Argument[this].Element;value;manual | +| System.Data.Entity.Core.Objects;ObjectParameterCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Data.Entity.Core.Objects;ObjectParameterCollection;false;CopyTo;(System.Data.Entity.Core.Objects.ObjectParameter[],System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Data.Entity.Core.Objects;ObjectParameterCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator`1.Current];value;manual | +| System.Data.Entity.Core.Objects;ObjectParameterCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Core.Objects;ObjectQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Core.Objects;ObjectQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator`1.Current];value;manual | +| System.Data.Entity.Core.Objects;ObjectResult;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Core.Objects;ObjectResult;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator`1.Current];value;manual | +| System.Data.Entity.Core.Objects;ObjectStateManager;false;ChangeRelationshipState;(TEntity,System.Object,System.Linq.Expressions.Expression>,System.Data.Entity.EntityState);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectStateManager;false;add_ObjectStateManagerChanged;(System.ComponentModel.CollectionChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectStateManager;false;remove_ObjectStateManagerChanged;(System.ComponentModel.CollectionChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.DependencyResolution;DbConfigurationLoadedEventArgs;false;ReplaceService;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.DependencyResolution;ExecutionStrategyResolver;false;ExecutionStrategyResolver;(System.String,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.DependencyResolution;SingletonDependencyResolver;false;SingletonDependencyResolver;(T,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.DependencyResolution;TransactionHandlerResolver;false;TransactionHandlerResolver;(System.Func,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;Executor+OperationBase;true;Execute;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;Executor+OperationBase;true;Execute;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;Executor+OperationBase;true;Execute;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;ReportHandler;false;ReportHandler;(System.Action,System.Action,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;ReportHandler;false;ReportHandler;(System.Action,System.Action,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;ReportHandler;false;ReportHandler;(System.Action,System.Action,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;ReportHandler;false;ReportHandler;(System.Action,System.Action,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Interception;DatabaseLogFormatter;false;DatabaseLogFormatter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Interception;DatabaseLogFormatter;false;DatabaseLogFormatter;(System.Data.Entity.DbContext,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;CommitFailureHandler;false;CommitFailureHandler;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbComplexPropertyEntry;false;ComplexProperty;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbComplexPropertyEntry;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbContextInfo;false;set_OnModelCreating;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbEntityEntry;false;Collection;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbEntityEntry;false;ComplexProperty;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbEntityEntry;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbEntityEntry;false;Reference;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbExecutionStrategy;false;Execute;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbExecutionStrategy;false;Execute;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbExecutionStrategy;false;ExecuteAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbExecutionStrategy;false;ExecuteAsync;(System.Func>,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbExecutionStrategy;false;UnwrapAndHandleException;(System.Exception,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Infrastructure;DbQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator`1.Current];value;manual | +| System.Data.Entity.Infrastructure;DbQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ForEachAsync;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ForEachAsync;(System.Action,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;AllAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;AllAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;AnyAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;AnyAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;CountAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;CountAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;FirstAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;FirstAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;FirstOrDefaultAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;FirstOrDefaultAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ForEachAsync;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ForEachAsync;(System.Action,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator`1.Current];value;manual | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;LongCountAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;LongCountAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;SingleAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;SingleAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;SingleOrDefaultAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;SingleOrDefaultAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DefaultExecutionStrategy;false;Execute;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DefaultExecutionStrategy;false;Execute;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DefaultExecutionStrategy;false;ExecuteAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DefaultExecutionStrategy;false;ExecuteAsync;(System.Func>,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;IDbExecutionStrategy;true;Execute;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;IDbExecutionStrategy;true;Execute;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;IDbExecutionStrategy;true;ExecuteAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;IDbExecutionStrategy;true;ExecuteAsync;(System.Func>,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations.Builders;TableBuilder;false;ForeignKey;(System.String,System.Linq.Expressions.Expression>,System.Boolean,System.String,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations.Builders;TableBuilder;false;Index;(System.Linq.Expressions.Expression>,System.String,System.Boolean,System.Boolean,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations.Builders;TableBuilder;false;PrimaryKey;(System.Linq.Expressions.Expression>,System.String,System.Boolean,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.Char[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.String,System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.String,System.Object);;Argument[1];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.String,System.Object,System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.String,System.Object,System.Object);;Argument[1];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.String,System.Object,System.Object);;Argument[2];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.String,System.Object[]);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;Write;(System.String,System.Object[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.Char[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.String,System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.String,System.Object);;Argument[1];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[1];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[2];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.String,System.Object[]);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;WriteLine;(System.String,System.Object[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;get_NewLine;();;Argument[this];ReturnValue;taint;df-generated | +| System.Data.Entity.Migrations.Utilities;IndentedTextWriter;false;set_NewLine;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Migrations;DbMigration;false;AddColumn;(System.String,System.String,System.Func,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;AlterColumn;(System.String,System.String,System.Func,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;AlterStoredProcedure;(System.String,System.Func,System.String,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;AlterTableAnnotations;(System.String,System.Func,System.Collections.Generic.IDictionary,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;CreateStoredProcedure;(System.String,System.Func,System.String,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;CreateTable;(System.String,System.Func,System.Collections.Generic.IDictionary,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;CreateTable;(System.String,System.Func,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigrationsConfiguration;false;SetHistoryContextFactory;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbSetMigrationsExtensions;false;AddOrUpdate;(System.Data.Entity.IDbSet,System.Linq.Expressions.Expression>,TEntity[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;AssociationModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;AssociationModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;AssociationModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;AssociationModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionModificationStoredProceduresConfiguration;false;Delete;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionModificationStoredProceduresConfiguration;false;Insert;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionModificationStoredProceduresConfiguration;false;Update;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;MapToStoredProcedures;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;HasKey;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;Ignore;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;MapToStoredProcedures;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DependentNavigationPropertyConfiguration;false;HasForeignKey;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Properties;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Requires;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ForeignKeyNavigationPropertyConfiguration;false;Map;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyNavigationPropertyConfiguration;false;WithMany;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyNavigationPropertyConfiguration;false;WithOptional;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyNavigationPropertyConfiguration;false;WithRequired;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;LeftKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;LeftKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;LeftKeyParameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;LeftKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;RightKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;RightKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;RightKeyParameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;RightKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProceduresConfiguration;false;Delete;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProceduresConfiguration;false;Insert;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyNavigationPropertyConfiguration;false;Map;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyNavigationPropertyConfiguration;false;MapToStoredProcedures;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ModificationStoredProceduresConfiguration;false;Delete;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ModificationStoredProceduresConfiguration;false;Insert;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ModificationStoredProceduresConfiguration;false;Update;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;OptionalNavigationPropertyConfiguration;false;WithMany;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;OptionalNavigationPropertyConfiguration;false;WithOptionalDependent;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;OptionalNavigationPropertyConfiguration;false;WithOptionalPrincipal;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;OptionalNavigationPropertyConfiguration;false;WithRequired;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;PropertyConventionConfiguration;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;PropertyConventionConfiguration;false;Having;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;PropertyConventionConfiguration;false;Where;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;PropertyConventionWithHavingConfiguration;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;RequiredNavigationPropertyConfiguration;false;WithMany;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;RequiredNavigationPropertyConfiguration;false;WithOptional;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;RequiredNavigationPropertyConfiguration;false;WithRequiredDependent;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;RequiredNavigationPropertyConfiguration;false;WithRequiredPrincipal;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Having;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Where;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Configure;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Having;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Where;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionWithHavingConfiguration;false;Configure;(System.Action,TValue>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionWithHavingConfiguration;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Conventions;AttributeToColumnAnnotationConvention;false;AttributeToColumnAnnotationConvention;(System.String,System.Func,TAnnotation>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Conventions;AttributeToTableAnnotationConvention;false;AttributeToTableAnnotationConvention;(System.String,System.Func,TAnnotation>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;ComplexTypeConfiguration;false;Ignore;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasIndex;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasKey;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasKey;(System.Linq.Expressions.Expression>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasKey;(System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasMany;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasOptional;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasRequired;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;Ignore;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;Map;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;Map;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;MapToStoredProcedures;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.SqlServer.Utilities;TaskExtensions+CultureAwaiter;false;OnCompleted;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.SqlServer.Utilities;TaskExtensions+CultureAwaiter;false;UnsafeOnCompleted;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.SqlServer.Utilities;TaskExtensions+CultureAwaiter;false;OnCompleted;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.SqlServer.Utilities;TaskExtensions+CultureAwaiter;false;UnsafeOnCompleted;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.SqlServer;SqlProviderServices;false;RegisterInfoMessageHandler;(System.Data.Common.DbConnection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Utilities;TaskExtensions+CultureAwaiter;false;OnCompleted;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Utilities;TaskExtensions+CultureAwaiter;false;UnsafeOnCompleted;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Utilities;TaskExtensions+CultureAwaiter;false;OnCompleted;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Utilities;TaskExtensions+CultureAwaiter;false;UnsafeOnCompleted;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;Database;false;set_Log;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetContextFactory;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetContextFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetDatabaseLogFormatter;(System.Func,System.Data.Entity.Infrastructure.Interception.DatabaseLogFormatter>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetDefaultHistoryContext;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetDefaultTransactionHandler;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetExecutionStrategy;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetExecutionStrategy;(System.String,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetHistoryContext;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetMetadataAnnotationSerializer;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetMigrationSqlGenerator;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetModelCacheKey;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetTransactionHandler;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetTransactionHandler;(System.String,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;add_Loaded;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;remove_Loaded;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Data.Entity;DbSet;false;Add;(TEntity);;Argument[0];Argument[this].Element;value;manual | | System.Data.Entity;DbSet;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].WithElement;Argument[this];value;manual | | System.Data.Entity;DbSet;false;Attach;(TEntity);;Argument[0];Argument[this].Element;value;manual | -| System.Data.Entity;DbSet;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator`1.Current];value;manual | -| System.Data.Entity;DbSet;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Entity;QueryableExtensions;false;AllAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AllAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AnyAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AnyAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;CountAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;CountAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;FirstAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;FirstAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;FirstOrDefaultAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;FirstOrDefaultAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ForEachAsync;(System.Linq.IQueryable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ForEachAsync;(System.Linq.IQueryable,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ForEachAsync;(System.Linq.IQueryable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ForEachAsync;(System.Linq.IQueryable,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;Include;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;LongCountAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;LongCountAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;MaxAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;MaxAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;MinAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;MinAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SingleAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SingleAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SingleOrDefaultAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SingleOrDefaultAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;Skip;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;Take;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Data.SqlClient;OnChangeEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlNotificationEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Data.SqlClient;SqlBulkCopy;false;add_SqlRowsCopied;(System.Data.SqlClient.SqlRowsCopiedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Data.SqlClient;SqlBulkCopy;false;remove_SqlRowsCopied;(System.Data.SqlClient.SqlRowsCopiedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | @@ -7006,6 +8256,27 @@ summary | System.Diagnostics;TraceSource;false;get_Switch;();;Argument[this];ReturnValue;taint;df-generated | | System.Diagnostics;TraceSource;false;remove_Initializing;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Diagnostics;TraceSource;false;set_Switch;(System.Diagnostics.SourceSwitch);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Configuration;SystemDrawingSection;false;get_BitmapSuffix;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;PlayRecordCallback;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_BeginPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_EndPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_PrintPage;(System.Drawing.Printing.PrintPageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_QueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_BeginPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_EndPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_PrintPage;(System.Drawing.Printing.PrintPageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_QueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.PrintEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintPageEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.PrintPageEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Drawing.Printing;PrinterSettings+StringCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Drawing.Printing;QueryPageSettingsEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.QueryPageSettingsEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Drawing;Color;false;FromName;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;Color;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | | System.Drawing;Color;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | @@ -7013,6 +8284,58 @@ summary | System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;ColorTranslator;false;FromHtml;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;ColorTranslator;false;ToHtml;(System.Drawing.Color);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Graphics+DrawImageAbort;false;BeginInvoke;(System.IntPtr,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;Invoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.Int32);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.Int32);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.IntPtr);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.IntPtr);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Image+GetThumbnailImageAbort;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Image;false;GetThumbnailImage;(System.Int32,System.Int32,System.Drawing.Image+GetThumbnailImageAbort,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;ImageAnimator;false;Animate;(System.Drawing.Image,System.EventHandler);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;ImageAnimator;false;StopAnimate;(System.Drawing.Image,System.EventHandler);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;Rectangle;false;Inflate;(System.Drawing.Rectangle,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;RectangleConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | @@ -9323,6 +10646,12 @@ summary | System.Linq;Queryable;false;Zip;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[2].Parameter[1];value;manual | | System.Linq;Queryable;false;Zip;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | | System.Linq;Queryable;false;Zip;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;manual | +| System.Media;SoundPlayer;false;add_LoadCompleted;(System.ComponentModel.AsyncCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;add_SoundLocationChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;add_StreamChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;remove_LoadCompleted;(System.ComponentModel.AsyncCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;remove_SoundLocationChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;remove_StreamChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.DateTime);;Argument[0];Argument[this];taint;df-generated | | System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan);;Argument[1];Argument[this];taint;df-generated | | System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan);;Argument[1];Argument[this];taint;df-generated | @@ -9802,6 +11131,7 @@ summary | System.Net.NetworkInformation;NetworkChange;false;add_NetworkAvailabilityChanged;(System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Net.NetworkInformation;NetworkChange;false;remove_NetworkAddressChanged;(System.Net.NetworkInformation.NetworkAddressChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Net.NetworkInformation;NetworkChange;false;remove_NetworkAvailabilityChanged;(System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | | System.Net.NetworkInformation;PhysicalAddress;false;GetAddressBytes;();;Argument[this];ReturnValue;taint;df-generated | | System.Net.NetworkInformation;PhysicalAddress;false;PhysicalAddress;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | | System.Net.NetworkInformation;Ping;false;add_PingCompleted;(System.Net.NetworkInformation.PingCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | @@ -12477,9 +13807,33 @@ summary | System.Security.Cryptography;TripleDESCryptoServiceProvider;false;get_LegalKeySizes;();;Argument[this];ReturnValue;taint;df-generated | | System.Security.Cryptography;TripleDESCryptoServiceProvider;false;set_IV;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | | System.Security.Cryptography;TripleDESCryptoServiceProvider;false;set_Key;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Security.Permissions;FileDialogPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;FileIOPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Security.Permissions;PrincipalPermission;false;Copy;();;Argument[this];ReturnValue;taint;df-generated | +| System.Security.Permissions;PrincipalPermission;false;Intersect;(System.Security.IPermission);;Argument[0];ReturnValue;taint;df-generated | +| System.Security.Permissions;PrincipalPermission;false;Intersect;(System.Security.IPermission);;Argument[this];ReturnValue;taint;df-generated | +| System.Security.Permissions;PrincipalPermission;false;Union;(System.Security.IPermission);;Argument[this];ReturnValue;taint;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;ReflectionPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;SecurityPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;UIPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;ApplicationTrustCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Security.Policy;ApplicationTrustCollection;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | +| System.Security.Policy;ApplicationTrustCollection;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Security.Policy;Evidence;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | System.Security.Policy;Evidence;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Security.Policy;Evidence;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Security.Policy;HashMembershipCondition;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;PolicyStatement;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;PublisherMembershipCondition;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;ZoneMembershipCondition;false;Copy;();;Argument[this];ReturnValue;value;df-generated | | System.Security.Principal;GenericIdentity;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | | System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.Security.Principal.GenericIdentity);;Argument[0];Argument[this];taint;df-generated | | System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String);;Argument[0];Argument[this];taint;df-generated | @@ -12500,9 +13854,11 @@ summary | System.Security.Principal;WindowsIdentity;false;RunImpersonated;(Microsoft.Win32.SafeHandles.SafeAccessTokenHandle,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Security.Principal;WindowsIdentity;false;RunImpersonatedAsync;(Microsoft.Win32.SafeHandles.SafeAccessTokenHandle,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Security.Principal;WindowsIdentity;false;RunImpersonatedAsync;(Microsoft.Win32.SafeHandles.SafeAccessTokenHandle,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Security;HostProtectionException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.Security;PermissionSet;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Security;PermissionSet;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Security;PermissionSet;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Security;SecurityContext;false;Run;(System.Security.SecurityContext,System.Threading.ContextCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | | System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | | System.Security;SecurityElement;false;AddChild;(System.Security.SecurityElement);;Argument[0];Argument[this];taint;df-generated | @@ -17332,6 +18688,8 @@ neutral | Microsoft.CSharp.RuntimeBinder;RuntimeBinderInternalCompilerException;RuntimeBinderInternalCompilerException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | Microsoft.CSharp.RuntimeBinder;RuntimeBinderInternalCompilerException;RuntimeBinderInternalCompilerException;(System.String);summary;df-generated | | Microsoft.CSharp.RuntimeBinder;RuntimeBinderInternalCompilerException;RuntimeBinderInternalCompilerException;(System.String,System.Exception);summary;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;GetConverter;(System.Type);summary;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;get_FileExtension;();summary;df-generated | | Microsoft.Extensions.Caching.Distributed;DistributedCacheExtensions;GetString;(Microsoft.Extensions.Caching.Distributed.IDistributedCache,System.String);summary;df-generated | | Microsoft.Extensions.Caching.Distributed;DistributedCacheExtensions;GetStringAsync;(Microsoft.Extensions.Caching.Distributed.IDistributedCache,System.String,System.Threading.CancellationToken);summary;df-generated | | Microsoft.Extensions.Caching.Distributed;DistributedCacheExtensions;Set;(Microsoft.Extensions.Caching.Distributed.IDistributedCache,System.String,System.Byte[]);summary;df-generated | @@ -18968,6 +20326,9 @@ neutral | Microsoft.VisualBasic;Strings;Trim;(System.String);summary;df-generated | | Microsoft.VisualBasic;Strings;UCase;(System.Char);summary;df-generated | | Microsoft.VisualBasic;Strings;UCase;(System.String);summary;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;GetConverter;(System.Type);summary;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;get_FileExtension;();summary;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;get_LanguageOptions;();summary;df-generated | | Microsoft.VisualBasic;VBFixedArrayAttribute;VBFixedArrayAttribute;(System.Int32);summary;df-generated | | Microsoft.VisualBasic;VBFixedArrayAttribute;VBFixedArrayAttribute;(System.Int32,System.Int32);summary;df-generated | | Microsoft.VisualBasic;VBFixedArrayAttribute;get_Bounds;();summary;df-generated | @@ -19009,6 +20370,8 @@ neutral | Microsoft.Win32.SafeHandles;SafeWaitHandle;ReleaseHandle;();summary;df-generated | | Microsoft.Win32.SafeHandles;SafeX509ChainHandle;Dispose;(System.Boolean);summary;df-generated | | Microsoft.Win32.SafeHandles;SafeX509ChainHandle;ReleaseHandle;();summary;df-generated | +| Microsoft.Win32;PowerModeChangedEventArgs;PowerModeChangedEventArgs;(Microsoft.Win32.PowerModes);summary;df-generated | +| Microsoft.Win32;PowerModeChangedEventArgs;get_Mode;();summary;df-generated | | Microsoft.Win32;Registry;GetValue;(System.String,System.String,System.Object);summary;df-generated | | Microsoft.Win32;Registry;SetValue;(System.String,System.String,System.Object);summary;df-generated | | Microsoft.Win32;Registry;SetValue;(System.String,System.String,System.Object,Microsoft.Win32.RegistryValueKind);summary;df-generated | @@ -19055,6 +20418,23 @@ neutral | Microsoft.Win32;RegistryKey;get_SubKeyCount;();summary;df-generated | | Microsoft.Win32;RegistryKey;get_ValueCount;();summary;df-generated | | Microsoft.Win32;RegistryKey;get_View;();summary;df-generated | +| Microsoft.Win32;SessionEndedEventArgs;SessionEndedEventArgs;(Microsoft.Win32.SessionEndReasons);summary;df-generated | +| Microsoft.Win32;SessionEndedEventArgs;get_Reason;();summary;df-generated | +| Microsoft.Win32;SessionEndingEventArgs;SessionEndingEventArgs;(Microsoft.Win32.SessionEndReasons);summary;df-generated | +| Microsoft.Win32;SessionEndingEventArgs;get_Cancel;();summary;df-generated | +| Microsoft.Win32;SessionEndingEventArgs;get_Reason;();summary;df-generated | +| Microsoft.Win32;SessionEndingEventArgs;set_Cancel;(System.Boolean);summary;df-generated | +| Microsoft.Win32;SessionSwitchEventArgs;SessionSwitchEventArgs;(Microsoft.Win32.SessionSwitchReason);summary;df-generated | +| Microsoft.Win32;SessionSwitchEventArgs;get_Reason;();summary;df-generated | +| Microsoft.Win32;SystemEvents;CreateTimer;(System.Int32);summary;df-generated | +| Microsoft.Win32;SystemEvents;InvokeOnEventsThread;(System.Delegate);summary;df-generated | +| Microsoft.Win32;SystemEvents;KillTimer;(System.IntPtr);summary;df-generated | +| Microsoft.Win32;TimerElapsedEventArgs;TimerElapsedEventArgs;(System.IntPtr);summary;df-generated | +| Microsoft.Win32;TimerElapsedEventArgs;get_TimerId;();summary;df-generated | +| Microsoft.Win32;UserPreferenceChangedEventArgs;UserPreferenceChangedEventArgs;(Microsoft.Win32.UserPreferenceCategory);summary;df-generated | +| Microsoft.Win32;UserPreferenceChangedEventArgs;get_Category;();summary;df-generated | +| Microsoft.Win32;UserPreferenceChangingEventArgs;UserPreferenceChangingEventArgs;(Microsoft.Win32.UserPreferenceCategory);summary;df-generated | +| Microsoft.Win32;UserPreferenceChangingEventArgs;get_Category;();summary;df-generated | | System.Buffers.Binary;BinaryPrimitives;ReadDoubleBigEndian;(System.ReadOnlySpan);summary;df-generated | | System.Buffers.Binary;BinaryPrimitives;ReadDoubleLittleEndian;(System.ReadOnlySpan);summary;df-generated | | System.Buffers.Binary;BinaryPrimitives;ReadHalfBigEndian;(System.ReadOnlySpan);summary;df-generated | @@ -19282,6 +20662,237 @@ neutral | System.Buffers;StandardFormat;get_Symbol;();summary;df-generated | | System.Buffers;StandardFormat;op_Equality;(System.Buffers.StandardFormat,System.Buffers.StandardFormat);summary;df-generated | | System.Buffers;StandardFormat;op_Inequality;(System.Buffers.StandardFormat,System.Buffers.StandardFormat);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;CmdArgsFromParameters;(System.CodeDom.Compiler.CompilerParameters);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;CompileAssemblyFromDom;(System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;CompileAssemblyFromDomBatch;(System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;CompileAssemblyFromFile;(System.CodeDom.Compiler.CompilerParameters,System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;CompileAssemblyFromFileBatch;(System.CodeDom.Compiler.CompilerParameters,System.String[]);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;CompileAssemblyFromSource;(System.CodeDom.Compiler.CompilerParameters,System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;CompileAssemblyFromSourceBatch;(System.CodeDom.Compiler.CompilerParameters,System.String[]);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;FromDom;(System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;FromDomBatch;(System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;FromFile;(System.CodeDom.Compiler.CompilerParameters,System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;FromFileBatch;(System.CodeDom.Compiler.CompilerParameters,System.String[]);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;FromSource;(System.CodeDom.Compiler.CompilerParameters,System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;FromSourceBatch;(System.CodeDom.Compiler.CompilerParameters,System.String[]);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;GetResponseFileCmdArgs;(System.CodeDom.Compiler.CompilerParameters,System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;ProcessCompilerOutputLine;(System.CodeDom.Compiler.CompilerResults,System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;get_CompilerName;();summary;df-generated | +| System.CodeDom.Compiler;CodeCompiler;get_FileExtension;();summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;CompileAssemblyFromDom;(System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;CompileAssemblyFromFile;(System.CodeDom.Compiler.CompilerParameters,System.String[]);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;CompileAssemblyFromSource;(System.CodeDom.Compiler.CompilerParameters,System.String[]);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;CreateCompiler;();summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;CreateGenerator;();summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;CreateParser;();summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;CreateProvider;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;CreateProvider;(System.String,System.Collections.Generic.IDictionary);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;GetAllCompilerInfo;();summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;GetCompilerInfo;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;GetConverter;(System.Type);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;GetLanguageFromExtension;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;IsDefinedExtension;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;IsDefinedLanguage;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;IsValidIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;Parse;(System.IO.TextReader);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;Supports;(System.CodeDom.Compiler.GeneratorSupport);summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;get_FileExtension;();summary;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;get_LanguageOptions;();summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;ContinueOnNewLine;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;CreateEscapedIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;CreateValidIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateArgumentReferenceExpression;(System.CodeDom.CodeArgumentReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateArrayCreateExpression;(System.CodeDom.CodeArrayCreateExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateArrayIndexerExpression;(System.CodeDom.CodeArrayIndexerExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateAssignStatement;(System.CodeDom.CodeAssignStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateAttachEventStatement;(System.CodeDom.CodeAttachEventStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateAttributeDeclarationsEnd;(System.CodeDom.CodeAttributeDeclarationCollection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateAttributeDeclarationsStart;(System.CodeDom.CodeAttributeDeclarationCollection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateBaseReferenceExpression;(System.CodeDom.CodeBaseReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateBinaryOperatorExpression;(System.CodeDom.CodeBinaryOperatorExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateCastExpression;(System.CodeDom.CodeCastExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateComment;(System.CodeDom.CodeComment);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateCommentStatement;(System.CodeDom.CodeCommentStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateCommentStatements;(System.CodeDom.CodeCommentStatementCollection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateCompileUnit;(System.CodeDom.CodeCompileUnit);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateCompileUnitEnd;(System.CodeDom.CodeCompileUnit);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateCompileUnitStart;(System.CodeDom.CodeCompileUnit);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateConditionStatement;(System.CodeDom.CodeConditionStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateConstructor;(System.CodeDom.CodeConstructor,System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateDecimalValue;(System.Decimal);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateDefaultValueExpression;(System.CodeDom.CodeDefaultValueExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateDelegateCreateExpression;(System.CodeDom.CodeDelegateCreateExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateDelegateInvokeExpression;(System.CodeDom.CodeDelegateInvokeExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateDirectionExpression;(System.CodeDom.CodeDirectionExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateDirectives;(System.CodeDom.CodeDirectiveCollection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateDoubleValue;(System.Double);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateEntryPointMethod;(System.CodeDom.CodeEntryPointMethod,System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateEvent;(System.CodeDom.CodeMemberEvent,System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateEventReferenceExpression;(System.CodeDom.CodeEventReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateExpression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateExpressionStatement;(System.CodeDom.CodeExpressionStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateField;(System.CodeDom.CodeMemberField);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateFieldReferenceExpression;(System.CodeDom.CodeFieldReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateGotoStatement;(System.CodeDom.CodeGotoStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateIndexerExpression;(System.CodeDom.CodeIndexerExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateIterationStatement;(System.CodeDom.CodeIterationStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateLabeledStatement;(System.CodeDom.CodeLabeledStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateLinePragmaEnd;(System.CodeDom.CodeLinePragma);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateLinePragmaStart;(System.CodeDom.CodeLinePragma);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateMethod;(System.CodeDom.CodeMemberMethod,System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateMethodInvokeExpression;(System.CodeDom.CodeMethodInvokeExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateMethodReferenceExpression;(System.CodeDom.CodeMethodReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateMethodReturnStatement;(System.CodeDom.CodeMethodReturnStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateNamespaceEnd;(System.CodeDom.CodeNamespace);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateNamespaceImport;(System.CodeDom.CodeNamespaceImport);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateNamespaceImports;(System.CodeDom.CodeNamespace);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateNamespaceStart;(System.CodeDom.CodeNamespace);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateNamespaces;(System.CodeDom.CodeCompileUnit);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateObjectCreateExpression;(System.CodeDom.CodeObjectCreateExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateParameterDeclarationExpression;(System.CodeDom.CodeParameterDeclarationExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GeneratePrimitiveExpression;(System.CodeDom.CodePrimitiveExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateProperty;(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GeneratePropertyReferenceExpression;(System.CodeDom.CodePropertyReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GeneratePropertySetValueReferenceExpression;(System.CodeDom.CodePropertySetValueReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateRemoveEventStatement;(System.CodeDom.CodeRemoveEventStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateSingleFloatValue;(System.Single);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateSnippetCompileUnit;(System.CodeDom.CodeSnippetCompileUnit);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateSnippetExpression;(System.CodeDom.CodeSnippetExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateSnippetMember;(System.CodeDom.CodeSnippetTypeMember);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateSnippetStatement;(System.CodeDom.CodeSnippetStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateStatement;(System.CodeDom.CodeStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateStatements;(System.CodeDom.CodeStatementCollection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateThisReferenceExpression;(System.CodeDom.CodeThisReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateThrowExceptionStatement;(System.CodeDom.CodeThrowExceptionStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateTryCatchFinallyStatement;(System.CodeDom.CodeTryCatchFinallyStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateTypeConstructor;(System.CodeDom.CodeTypeConstructor);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateTypeEnd;(System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateTypeOfExpression;(System.CodeDom.CodeTypeOfExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateTypeReferenceExpression;(System.CodeDom.CodeTypeReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateTypeStart;(System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateVariableDeclarationStatement;(System.CodeDom.CodeVariableDeclarationStatement);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GenerateVariableReferenceExpression;(System.CodeDom.CodeVariableReferenceExpression);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;GetTypeOutput;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;IsValidIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;IsValidLanguageIndependentIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputAttributeArgument;(System.CodeDom.CodeAttributeArgument);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputAttributeDeclarations;(System.CodeDom.CodeAttributeDeclarationCollection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputDirection;(System.CodeDom.FieldDirection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputExpressionList;(System.CodeDom.CodeExpressionCollection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputExpressionList;(System.CodeDom.CodeExpressionCollection,System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputFieldScopeModifier;(System.CodeDom.MemberAttributes);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputMemberAccessModifier;(System.CodeDom.MemberAttributes);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputMemberScopeModifier;(System.CodeDom.MemberAttributes);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputOperator;(System.CodeDom.CodeBinaryOperatorType);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputParameters;(System.CodeDom.CodeParameterDeclarationExpressionCollection);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputType;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputTypeAttributes;(System.Reflection.TypeAttributes,System.Boolean,System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;OutputTypeNamePair;(System.CodeDom.CodeTypeReference,System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;QuoteSnippetString;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;Supports;(System.CodeDom.Compiler.GeneratorSupport);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;ValidateIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;ValidateIdentifiers;(System.CodeDom.CodeObject);summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;get_Indent;();summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;get_IsCurrentClass;();summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;get_IsCurrentDelegate;();summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;get_IsCurrentEnum;();summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;get_IsCurrentInterface;();summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;get_IsCurrentStruct;();summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;get_NullToken;();summary;df-generated | +| System.CodeDom.Compiler;CodeGenerator;set_Indent;(System.Int32);summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;get_BlankLinesBetweenMembers;();summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;get_ElseOnClosing;();summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;get_VerbatimOrder;();summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;set_BlankLinesBetweenMembers;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;set_BracingStyle;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;set_ElseOnClosing;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;set_IndentString;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;set_Item;(System.String,System.Object);summary;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;set_VerbatimOrder;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CodeParser;Parse;(System.IO.TextReader);summary;df-generated | +| System.CodeDom.Compiler;CompilerError;CompilerError;(System.String,System.Int32,System.Int32,System.String,System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerError;ToString;();summary;df-generated | +| System.CodeDom.Compiler;CompilerError;get_Column;();summary;df-generated | +| System.CodeDom.Compiler;CompilerError;get_ErrorNumber;();summary;df-generated | +| System.CodeDom.Compiler;CompilerError;get_ErrorText;();summary;df-generated | +| System.CodeDom.Compiler;CompilerError;get_FileName;();summary;df-generated | +| System.CodeDom.Compiler;CompilerError;get_IsWarning;();summary;df-generated | +| System.CodeDom.Compiler;CompilerError;get_Line;();summary;df-generated | +| System.CodeDom.Compiler;CompilerError;set_Column;(System.Int32);summary;df-generated | +| System.CodeDom.Compiler;CompilerError;set_ErrorNumber;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerError;set_ErrorText;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerError;set_FileName;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerError;set_IsWarning;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CompilerError;set_Line;(System.Int32);summary;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;Contains;(System.CodeDom.Compiler.CompilerError);summary;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;IndexOf;(System.CodeDom.Compiler.CompilerError);summary;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;get_HasErrors;();summary;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;get_HasWarnings;();summary;df-generated | +| System.CodeDom.Compiler;CompilerInfo;CreateDefaultCompilerParameters;();summary;df-generated | +| System.CodeDom.Compiler;CompilerInfo;CreateProvider;();summary;df-generated | +| System.CodeDom.Compiler;CompilerInfo;CreateProvider;(System.Collections.Generic.IDictionary);summary;df-generated | +| System.CodeDom.Compiler;CompilerInfo;Equals;(System.Object);summary;df-generated | +| System.CodeDom.Compiler;CompilerInfo;GetHashCode;();summary;df-generated | +| System.CodeDom.Compiler;CompilerInfo;get_IsCodeDomProviderTypeValid;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;CompilerParameters;(System.String[]);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;CompilerParameters;(System.String[],System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;CompilerParameters;(System.String[],System.String,System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_CompilerOptions;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_CoreAssemblyFileName;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_EmbeddedResources;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_GenerateExecutable;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_GenerateInMemory;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_IncludeDebugInformation;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_LinkedResources;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_MainClass;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_OutputAssembly;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_ReferencedAssemblies;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_TempFiles;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_TreatWarningsAsErrors;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_UserToken;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_WarningLevel;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;get_Win32Resource;();summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_CompilerOptions;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_CoreAssemblyFileName;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_GenerateExecutable;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_GenerateInMemory;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_IncludeDebugInformation;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_MainClass;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_OutputAssembly;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_TreatWarningsAsErrors;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_UserToken;(System.IntPtr);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_WarningLevel;(System.Int32);summary;df-generated | +| System.CodeDom.Compiler;CompilerParameters;set_Win32Resource;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;CompilerResults;(System.CodeDom.Compiler.TempFileCollection);summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;get_Errors;();summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;get_NativeCompilerReturnValue;();summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;get_Output;();summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;get_PathToAssembly;();summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;get_TempFiles;();summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;set_NativeCompilerReturnValue;(System.Int32);summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;set_PathToAssembly;(System.String);summary;df-generated | +| System.CodeDom.Compiler;CompilerResults;set_TempFiles;(System.CodeDom.Compiler.TempFileCollection);summary;df-generated | +| System.CodeDom.Compiler;Executor;ExecWait;(System.String,System.CodeDom.Compiler.TempFileCollection);summary;df-generated | +| System.CodeDom.Compiler;ICodeCompiler;CompileAssemblyFromDom;(System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit);summary;df-generated | +| System.CodeDom.Compiler;ICodeCompiler;CompileAssemblyFromDomBatch;(System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]);summary;df-generated | +| System.CodeDom.Compiler;ICodeCompiler;CompileAssemblyFromFile;(System.CodeDom.Compiler.CompilerParameters,System.String);summary;df-generated | +| System.CodeDom.Compiler;ICodeCompiler;CompileAssemblyFromFileBatch;(System.CodeDom.Compiler.CompilerParameters,System.String[]);summary;df-generated | +| System.CodeDom.Compiler;ICodeCompiler;CompileAssemblyFromSource;(System.CodeDom.Compiler.CompilerParameters,System.String);summary;df-generated | +| System.CodeDom.Compiler;ICodeCompiler;CompileAssemblyFromSourceBatch;(System.CodeDom.Compiler.CompilerParameters,System.String[]);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;CreateEscapedIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;CreateValidIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;GenerateCodeFromCompileUnit;(System.CodeDom.CodeCompileUnit,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;GenerateCodeFromExpression;(System.CodeDom.CodeExpression,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;GenerateCodeFromStatement;(System.CodeDom.CodeStatement,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;GetTypeOutput;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;IsValidIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;Supports;(System.CodeDom.Compiler.GeneratorSupport);summary;df-generated | +| System.CodeDom.Compiler;ICodeGenerator;ValidateIdentifier;(System.String);summary;df-generated | +| System.CodeDom.Compiler;ICodeParser;Parse;(System.IO.TextReader);summary;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;Close;();summary;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;DisposeAsync;();summary;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;Flush;();summary;df-generated | @@ -19330,6 +20941,257 @@ neutral | System.CodeDom.Compiler;IndentedTextWriter;WriteLineNoTabs;(System.String);summary;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;get_Indent;();summary;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;set_Indent;(System.Int32);summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;AddFile;(System.String,System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;CopyTo;(System.String[],System.Int32);summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;Delete;();summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;Dispose;();summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;Dispose;(System.Boolean);summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;GetEnumerator;();summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;TempFileCollection;(System.String);summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;get_Count;();summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;get_IsSynchronized;();summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;get_KeepFiles;();summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;get_SyncRoot;();summary;df-generated | +| System.CodeDom.Compiler;TempFileCollection;set_KeepFiles;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeArrayCreateExpression;get_CreateType;();summary;df-generated | +| System.CodeDom;CodeArrayCreateExpression;get_Size;();summary;df-generated | +| System.CodeDom;CodeArrayCreateExpression;get_SizeExpression;();summary;df-generated | +| System.CodeDom;CodeArrayCreateExpression;set_Size;(System.Int32);summary;df-generated | +| System.CodeDom;CodeArrayCreateExpression;set_SizeExpression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeArrayIndexerExpression;CodeArrayIndexerExpression;(System.CodeDom.CodeExpression,System.CodeDom.CodeExpression[]);summary;df-generated | +| System.CodeDom;CodeArrayIndexerExpression;get_Indices;();summary;df-generated | +| System.CodeDom;CodeArrayIndexerExpression;get_TargetObject;();summary;df-generated | +| System.CodeDom;CodeArrayIndexerExpression;set_TargetObject;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeAssignStatement;CodeAssignStatement;(System.CodeDom.CodeExpression,System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeAssignStatement;get_Left;();summary;df-generated | +| System.CodeDom;CodeAssignStatement;get_Right;();summary;df-generated | +| System.CodeDom;CodeAssignStatement;set_Left;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeAssignStatement;set_Right;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeAttachEventStatement;CodeAttachEventStatement;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeAttachEventStatement;get_Event;();summary;df-generated | +| System.CodeDom;CodeAttachEventStatement;get_Listener;();summary;df-generated | +| System.CodeDom;CodeAttachEventStatement;set_Listener;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeAttributeArgument;CodeAttributeArgument;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeAttributeArgument;get_Value;();summary;df-generated | +| System.CodeDom;CodeAttributeArgument;set_Value;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;Contains;(System.CodeDom.CodeAttributeArgument);summary;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;IndexOf;(System.CodeDom.CodeAttributeArgument);summary;df-generated | +| System.CodeDom;CodeAttributeDeclaration;CodeAttributeDeclaration;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;Contains;(System.CodeDom.CodeAttributeDeclaration);summary;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;IndexOf;(System.CodeDom.CodeAttributeDeclaration);summary;df-generated | +| System.CodeDom;CodeBinaryOperatorExpression;CodeBinaryOperatorExpression;(System.CodeDom.CodeExpression,System.CodeDom.CodeBinaryOperatorType,System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeBinaryOperatorExpression;get_Left;();summary;df-generated | +| System.CodeDom;CodeBinaryOperatorExpression;get_Operator;();summary;df-generated | +| System.CodeDom;CodeBinaryOperatorExpression;get_Right;();summary;df-generated | +| System.CodeDom;CodeBinaryOperatorExpression;set_Left;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeBinaryOperatorExpression;set_Operator;(System.CodeDom.CodeBinaryOperatorType);summary;df-generated | +| System.CodeDom;CodeBinaryOperatorExpression;set_Right;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeCastExpression;get_Expression;();summary;df-generated | +| System.CodeDom;CodeCastExpression;get_TargetType;();summary;df-generated | +| System.CodeDom;CodeCastExpression;set_Expression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeCatchClause;get_CatchExceptionType;();summary;df-generated | +| System.CodeDom;CodeCatchClause;get_Statements;();summary;df-generated | +| System.CodeDom;CodeCatchClauseCollection;Contains;(System.CodeDom.CodeCatchClause);summary;df-generated | +| System.CodeDom;CodeCatchClauseCollection;IndexOf;(System.CodeDom.CodeCatchClause);summary;df-generated | +| System.CodeDom;CodeChecksumPragma;get_ChecksumAlgorithmId;();summary;df-generated | +| System.CodeDom;CodeChecksumPragma;get_ChecksumData;();summary;df-generated | +| System.CodeDom;CodeChecksumPragma;set_ChecksumAlgorithmId;(System.Guid);summary;df-generated | +| System.CodeDom;CodeChecksumPragma;set_ChecksumData;(System.Byte[]);summary;df-generated | +| System.CodeDom;CodeComment;get_DocComment;();summary;df-generated | +| System.CodeDom;CodeComment;set_DocComment;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeCommentStatement;CodeCommentStatement;(System.CodeDom.CodeComment);summary;df-generated | +| System.CodeDom;CodeCommentStatement;CodeCommentStatement;(System.String);summary;df-generated | +| System.CodeDom;CodeCommentStatement;CodeCommentStatement;(System.String,System.Boolean);summary;df-generated | +| System.CodeDom;CodeCommentStatement;get_Comment;();summary;df-generated | +| System.CodeDom;CodeCommentStatement;set_Comment;(System.CodeDom.CodeComment);summary;df-generated | +| System.CodeDom;CodeCommentStatementCollection;Contains;(System.CodeDom.CodeCommentStatement);summary;df-generated | +| System.CodeDom;CodeCommentStatementCollection;IndexOf;(System.CodeDom.CodeCommentStatement);summary;df-generated | +| System.CodeDom;CodeCompileUnit;get_AssemblyCustomAttributes;();summary;df-generated | +| System.CodeDom;CodeCompileUnit;get_EndDirectives;();summary;df-generated | +| System.CodeDom;CodeCompileUnit;get_Namespaces;();summary;df-generated | +| System.CodeDom;CodeCompileUnit;get_ReferencedAssemblies;();summary;df-generated | +| System.CodeDom;CodeCompileUnit;get_StartDirectives;();summary;df-generated | +| System.CodeDom;CodeConditionStatement;CodeConditionStatement;(System.CodeDom.CodeExpression,System.CodeDom.CodeStatement[]);summary;df-generated | +| System.CodeDom;CodeConditionStatement;CodeConditionStatement;(System.CodeDom.CodeExpression,System.CodeDom.CodeStatement[],System.CodeDom.CodeStatement[]);summary;df-generated | +| System.CodeDom;CodeConditionStatement;get_Condition;();summary;df-generated | +| System.CodeDom;CodeConditionStatement;get_FalseStatements;();summary;df-generated | +| System.CodeDom;CodeConditionStatement;get_TrueStatements;();summary;df-generated | +| System.CodeDom;CodeConditionStatement;set_Condition;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeConstructor;get_BaseConstructorArgs;();summary;df-generated | +| System.CodeDom;CodeConstructor;get_ChainedConstructorArgs;();summary;df-generated | +| System.CodeDom;CodeDefaultValueExpression;get_Type;();summary;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;get_DelegateType;();summary;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;get_TargetObject;();summary;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;set_TargetObject;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeDelegateInvokeExpression;CodeDelegateInvokeExpression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeDelegateInvokeExpression;CodeDelegateInvokeExpression;(System.CodeDom.CodeExpression,System.CodeDom.CodeExpression[]);summary;df-generated | +| System.CodeDom;CodeDelegateInvokeExpression;get_Parameters;();summary;df-generated | +| System.CodeDom;CodeDelegateInvokeExpression;get_TargetObject;();summary;df-generated | +| System.CodeDom;CodeDelegateInvokeExpression;set_TargetObject;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeDirectionExpression;CodeDirectionExpression;(System.CodeDom.FieldDirection,System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeDirectionExpression;get_Direction;();summary;df-generated | +| System.CodeDom;CodeDirectionExpression;get_Expression;();summary;df-generated | +| System.CodeDom;CodeDirectionExpression;set_Direction;(System.CodeDom.FieldDirection);summary;df-generated | +| System.CodeDom;CodeDirectionExpression;set_Expression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeDirectiveCollection;Contains;(System.CodeDom.CodeDirective);summary;df-generated | +| System.CodeDom;CodeDirectiveCollection;IndexOf;(System.CodeDom.CodeDirective);summary;df-generated | +| System.CodeDom;CodeEventReferenceExpression;get_TargetObject;();summary;df-generated | +| System.CodeDom;CodeEventReferenceExpression;set_TargetObject;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeExpressionCollection;Contains;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeExpressionCollection;IndexOf;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeExpressionStatement;CodeExpressionStatement;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeExpressionStatement;get_Expression;();summary;df-generated | +| System.CodeDom;CodeExpressionStatement;set_Expression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeFieldReferenceExpression;get_TargetObject;();summary;df-generated | +| System.CodeDom;CodeFieldReferenceExpression;set_TargetObject;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeIndexerExpression;CodeIndexerExpression;(System.CodeDom.CodeExpression,System.CodeDom.CodeExpression[]);summary;df-generated | +| System.CodeDom;CodeIndexerExpression;get_Indices;();summary;df-generated | +| System.CodeDom;CodeIndexerExpression;get_TargetObject;();summary;df-generated | +| System.CodeDom;CodeIndexerExpression;set_TargetObject;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeIterationStatement;CodeIterationStatement;(System.CodeDom.CodeStatement,System.CodeDom.CodeExpression,System.CodeDom.CodeStatement,System.CodeDom.CodeStatement[]);summary;df-generated | +| System.CodeDom;CodeIterationStatement;get_IncrementStatement;();summary;df-generated | +| System.CodeDom;CodeIterationStatement;get_InitStatement;();summary;df-generated | +| System.CodeDom;CodeIterationStatement;get_Statements;();summary;df-generated | +| System.CodeDom;CodeIterationStatement;get_TestExpression;();summary;df-generated | +| System.CodeDom;CodeIterationStatement;set_IncrementStatement;(System.CodeDom.CodeStatement);summary;df-generated | +| System.CodeDom;CodeIterationStatement;set_InitStatement;(System.CodeDom.CodeStatement);summary;df-generated | +| System.CodeDom;CodeIterationStatement;set_TestExpression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeLabeledStatement;get_Statement;();summary;df-generated | +| System.CodeDom;CodeLabeledStatement;set_Statement;(System.CodeDom.CodeStatement);summary;df-generated | +| System.CodeDom;CodeLinePragma;get_LineNumber;();summary;df-generated | +| System.CodeDom;CodeLinePragma;set_LineNumber;(System.Int32);summary;df-generated | +| System.CodeDom;CodeMemberEvent;get_ImplementationTypes;();summary;df-generated | +| System.CodeDom;CodeMemberEvent;get_PrivateImplementationType;();summary;df-generated | +| System.CodeDom;CodeMemberEvent;get_Type;();summary;df-generated | +| System.CodeDom;CodeMemberEvent;set_PrivateImplementationType;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom;CodeMemberField;get_InitExpression;();summary;df-generated | +| System.CodeDom;CodeMemberField;get_Type;();summary;df-generated | +| System.CodeDom;CodeMemberField;set_InitExpression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeMemberMethod;get_PrivateImplementationType;();summary;df-generated | +| System.CodeDom;CodeMemberMethod;get_ReturnType;();summary;df-generated | +| System.CodeDom;CodeMemberMethod;get_ReturnTypeCustomAttributes;();summary;df-generated | +| System.CodeDom;CodeMemberMethod;get_TypeParameters;();summary;df-generated | +| System.CodeDom;CodeMemberMethod;set_PrivateImplementationType;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom;CodeMemberProperty;get_GetStatements;();summary;df-generated | +| System.CodeDom;CodeMemberProperty;get_HasGet;();summary;df-generated | +| System.CodeDom;CodeMemberProperty;get_HasSet;();summary;df-generated | +| System.CodeDom;CodeMemberProperty;get_ImplementationTypes;();summary;df-generated | +| System.CodeDom;CodeMemberProperty;get_Parameters;();summary;df-generated | +| System.CodeDom;CodeMemberProperty;get_PrivateImplementationType;();summary;df-generated | +| System.CodeDom;CodeMemberProperty;get_SetStatements;();summary;df-generated | +| System.CodeDom;CodeMemberProperty;get_Type;();summary;df-generated | +| System.CodeDom;CodeMemberProperty;set_HasGet;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeMemberProperty;set_HasSet;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeMemberProperty;set_PrivateImplementationType;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom;CodeMethodInvokeExpression;get_Method;();summary;df-generated | +| System.CodeDom;CodeMethodInvokeExpression;get_Parameters;();summary;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;get_TargetObject;();summary;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;get_TypeArguments;();summary;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;set_TargetObject;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeMethodReturnStatement;CodeMethodReturnStatement;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeMethodReturnStatement;get_Expression;();summary;df-generated | +| System.CodeDom;CodeMethodReturnStatement;set_Expression;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeNamespaceCollection;Contains;(System.CodeDom.CodeNamespace);summary;df-generated | +| System.CodeDom;CodeNamespaceCollection;IndexOf;(System.CodeDom.CodeNamespace);summary;df-generated | +| System.CodeDom;CodeNamespaceImport;get_LinePragma;();summary;df-generated | +| System.CodeDom;CodeNamespaceImport;set_LinePragma;(System.CodeDom.CodeLinePragma);summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;Contains;(System.Object);summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;IndexOf;(System.Object);summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;Remove;(System.Object);summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;RemoveAt;(System.Int32);summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;get_Count;();summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;get_IsFixedSize;();summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;get_IsReadOnly;();summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;get_IsSynchronized;();summary;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;get_SyncRoot;();summary;df-generated | +| System.CodeDom;CodeObject;get_UserData;();summary;df-generated | +| System.CodeDom;CodeObjectCreateExpression;get_CreateType;();summary;df-generated | +| System.CodeDom;CodeObjectCreateExpression;get_Parameters;();summary;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;get_CustomAttributes;();summary;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;get_Direction;();summary;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;get_Type;();summary;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;set_Direction;(System.CodeDom.FieldDirection);summary;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;Contains;(System.CodeDom.CodeParameterDeclarationExpression);summary;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;IndexOf;(System.CodeDom.CodeParameterDeclarationExpression);summary;df-generated | +| System.CodeDom;CodePrimitiveExpression;CodePrimitiveExpression;(System.Object);summary;df-generated | +| System.CodeDom;CodePrimitiveExpression;get_Value;();summary;df-generated | +| System.CodeDom;CodePrimitiveExpression;set_Value;(System.Object);summary;df-generated | +| System.CodeDom;CodePropertyReferenceExpression;get_TargetObject;();summary;df-generated | +| System.CodeDom;CodePropertyReferenceExpression;set_TargetObject;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeRegionDirective;get_RegionMode;();summary;df-generated | +| System.CodeDom;CodeRegionDirective;set_RegionMode;(System.CodeDom.CodeRegionMode);summary;df-generated | +| System.CodeDom;CodeRemoveEventStatement;get_Event;();summary;df-generated | +| System.CodeDom;CodeRemoveEventStatement;get_Listener;();summary;df-generated | +| System.CodeDom;CodeRemoveEventStatement;set_Listener;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeSnippetCompileUnit;get_LinePragma;();summary;df-generated | +| System.CodeDom;CodeSnippetCompileUnit;set_LinePragma;(System.CodeDom.CodeLinePragma);summary;df-generated | +| System.CodeDom;CodeStatement;get_EndDirectives;();summary;df-generated | +| System.CodeDom;CodeStatement;get_LinePragma;();summary;df-generated | +| System.CodeDom;CodeStatement;get_StartDirectives;();summary;df-generated | +| System.CodeDom;CodeStatement;set_LinePragma;(System.CodeDom.CodeLinePragma);summary;df-generated | +| System.CodeDom;CodeStatementCollection;Add;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeStatementCollection;Contains;(System.CodeDom.CodeStatement);summary;df-generated | +| System.CodeDom;CodeStatementCollection;IndexOf;(System.CodeDom.CodeStatement);summary;df-generated | +| System.CodeDom;CodeThrowExceptionStatement;CodeThrowExceptionStatement;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeThrowExceptionStatement;get_ToThrow;();summary;df-generated | +| System.CodeDom;CodeThrowExceptionStatement;set_ToThrow;(System.CodeDom.CodeExpression);summary;df-generated | +| System.CodeDom;CodeTryCatchFinallyStatement;CodeTryCatchFinallyStatement;(System.CodeDom.CodeStatement[],System.CodeDom.CodeCatchClause[]);summary;df-generated | +| System.CodeDom;CodeTryCatchFinallyStatement;CodeTryCatchFinallyStatement;(System.CodeDom.CodeStatement[],System.CodeDom.CodeCatchClause[],System.CodeDom.CodeStatement[]);summary;df-generated | +| System.CodeDom;CodeTryCatchFinallyStatement;get_CatchClauses;();summary;df-generated | +| System.CodeDom;CodeTryCatchFinallyStatement;get_FinallyStatements;();summary;df-generated | +| System.CodeDom;CodeTryCatchFinallyStatement;get_TryStatements;();summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;get_IsClass;();summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;get_IsEnum;();summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;get_IsInterface;();summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;get_IsPartial;();summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;get_IsStruct;();summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;get_TypeAttributes;();summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;get_TypeParameters;();summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;set_IsClass;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;set_IsEnum;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;set_IsInterface;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;set_IsPartial;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;set_IsStruct;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeTypeDeclaration;set_TypeAttributes;(System.Reflection.TypeAttributes);summary;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;Contains;(System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;IndexOf;(System.CodeDom.CodeTypeDeclaration);summary;df-generated | +| System.CodeDom;CodeTypeDelegate;get_Parameters;();summary;df-generated | +| System.CodeDom;CodeTypeDelegate;get_ReturnType;();summary;df-generated | +| System.CodeDom;CodeTypeMember;get_Attributes;();summary;df-generated | +| System.CodeDom;CodeTypeMember;get_Comments;();summary;df-generated | +| System.CodeDom;CodeTypeMember;get_CustomAttributes;();summary;df-generated | +| System.CodeDom;CodeTypeMember;get_EndDirectives;();summary;df-generated | +| System.CodeDom;CodeTypeMember;get_LinePragma;();summary;df-generated | +| System.CodeDom;CodeTypeMember;get_StartDirectives;();summary;df-generated | +| System.CodeDom;CodeTypeMember;set_Attributes;(System.CodeDom.MemberAttributes);summary;df-generated | +| System.CodeDom;CodeTypeMember;set_LinePragma;(System.CodeDom.CodeLinePragma);summary;df-generated | +| System.CodeDom;CodeTypeMemberCollection;Contains;(System.CodeDom.CodeTypeMember);summary;df-generated | +| System.CodeDom;CodeTypeMemberCollection;IndexOf;(System.CodeDom.CodeTypeMember);summary;df-generated | +| System.CodeDom;CodeTypeOfExpression;get_Type;();summary;df-generated | +| System.CodeDom;CodeTypeParameter;get_Constraints;();summary;df-generated | +| System.CodeDom;CodeTypeParameter;get_CustomAttributes;();summary;df-generated | +| System.CodeDom;CodeTypeParameter;get_HasConstructorConstraint;();summary;df-generated | +| System.CodeDom;CodeTypeParameter;set_HasConstructorConstraint;(System.Boolean);summary;df-generated | +| System.CodeDom;CodeTypeParameterCollection;Contains;(System.CodeDom.CodeTypeParameter);summary;df-generated | +| System.CodeDom;CodeTypeParameterCollection;IndexOf;(System.CodeDom.CodeTypeParameter);summary;df-generated | +| System.CodeDom;CodeTypeReference;CodeTypeReference;(System.CodeDom.CodeTypeParameter);summary;df-generated | +| System.CodeDom;CodeTypeReference;CodeTypeReference;(System.CodeDom.CodeTypeReference,System.Int32);summary;df-generated | +| System.CodeDom;CodeTypeReference;CodeTypeReference;(System.String,System.CodeDom.CodeTypeReference[]);summary;df-generated | +| System.CodeDom;CodeTypeReference;CodeTypeReference;(System.String,System.Int32);summary;df-generated | +| System.CodeDom;CodeTypeReference;CodeTypeReference;(System.Type,System.CodeDom.CodeTypeReferenceOptions);summary;df-generated | +| System.CodeDom;CodeTypeReference;get_ArrayElementType;();summary;df-generated | +| System.CodeDom;CodeTypeReference;get_ArrayRank;();summary;df-generated | +| System.CodeDom;CodeTypeReference;get_Options;();summary;df-generated | +| System.CodeDom;CodeTypeReference;get_TypeArguments;();summary;df-generated | +| System.CodeDom;CodeTypeReference;set_ArrayElementType;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom;CodeTypeReference;set_ArrayRank;(System.Int32);summary;df-generated | +| System.CodeDom;CodeTypeReference;set_Options;(System.CodeDom.CodeTypeReferenceOptions);summary;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;Contains;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;IndexOf;(System.CodeDom.CodeTypeReference);summary;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;get_Type;();summary;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;get_InitExpression;();summary;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;get_Type;();summary;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;set_InitExpression;(System.CodeDom.CodeExpression);summary;df-generated | | System.Collections.Concurrent;BlockingCollection;AddToAny;(System.Collections.Concurrent.BlockingCollection[],T);summary;df-generated | | System.Collections.Concurrent;BlockingCollection;AddToAny;(System.Collections.Concurrent.BlockingCollection[],T,System.Threading.CancellationToken);summary;df-generated | | System.Collections.Concurrent;BlockingCollection;BlockingCollection;(System.Int32);summary;df-generated | @@ -21873,6 +23735,723 @@ neutral | System.ComponentModel;Win32Exception;Win32Exception;(System.String);summary;df-generated | | System.ComponentModel;Win32Exception;Win32Exception;(System.String,System.Exception);summary;df-generated | | System.ComponentModel;Win32Exception;get_NativeErrorCode;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;CreateConfigurationContext;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;CreateDeprecatedConfigContext;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;DecryptSection;(System.String,System.Configuration.ProtectedConfigurationProvider,System.Configuration.ProtectedConfigurationSection);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;DeleteStream;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;EncryptSection;(System.String,System.Configuration.ProtectedConfigurationProvider,System.Configuration.ProtectedConfigurationSection);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;GetConfigPathFromLocationSubPath;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;GetConfigType;(System.String,System.Boolean);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;GetRestrictedPermissions;(System.Configuration.Internal.IInternalConfigRecord,System.Security.PermissionSet,System.Boolean);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;GetStreamName;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;GetStreamVersion;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;Impersonate;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;Init;(System.Configuration.Internal.IInternalConfigRoot,System.Object[]);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsAboveApplication;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsConfigRecordRequired;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsDefinitionAllowed;(System.String,System.Configuration.ConfigurationAllowDefinition,System.Configuration.ConfigurationAllowExeDefinition);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsFile;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsFullTrustSectionWithoutAptcaAllowed;(System.Configuration.Internal.IInternalConfigRecord);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsInitDelayed;(System.Configuration.Internal.IInternalConfigRecord);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsLocationApplicable;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsSecondaryRoot;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;IsTrustedConfigPath;(System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;PrefetchAll;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;PrefetchSection;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;RefreshConfigPaths;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;RequireCompleteInit;(System.Configuration.Internal.IInternalConfigRecord);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;VerifyDefinitionAllowed;(System.String,System.Configuration.ConfigurationAllowDefinition,System.Configuration.ConfigurationAllowExeDefinition,System.Configuration.Internal.IConfigErrorInfo);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;WriteCompleted;(System.String,System.Boolean,System.Object);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;WriteCompleted;(System.String,System.Boolean,System.Object,System.Boolean);summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_HasLocalConfig;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_HasRoamingConfig;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_Host;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_IsAppConfigHttp;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_IsRemote;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_SupportsChangeNotifications;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_SupportsLocation;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_SupportsPath;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;get_SupportsRefresh;();summary;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;set_Host;(System.Configuration.Internal.IInternalConfigHost);summary;df-generated | +| System.Configuration.Internal;IConfigErrorInfo;get_Filename;();summary;df-generated | +| System.Configuration.Internal;IConfigErrorInfo;get_LineNumber;();summary;df-generated | +| System.Configuration.Internal;IConfigSystem;Init;(System.Type,System.Object[]);summary;df-generated | +| System.Configuration.Internal;IConfigSystem;get_Host;();summary;df-generated | +| System.Configuration.Internal;IConfigSystem;get_Root;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerHelper;EnsureNetConfigLoaded;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_ApplicationConfigUri;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_ExeLocalConfigDirectory;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_ExeLocalConfigPath;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_ExeProductName;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_ExeProductVersion;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_ExeRoamingConfigDirectory;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_ExeRoamingConfigPath;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_MachineConfigPath;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_SetConfigurationSystemInProgress;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_SupportsUserConfig;();summary;df-generated | +| System.Configuration.Internal;IConfigurationManagerInternal;get_UserConfigFilename;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigClientHost;GetExeConfigPath;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigClientHost;GetLocalUserConfigPath;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigClientHost;GetRoamingUserConfigPath;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigClientHost;IsExeConfig;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigClientHost;IsLocalUserConfig;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigClientHost;IsRoamingUserConfig;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigConfigurationFactory;Create;(System.Type,System.Object[]);summary;df-generated | +| System.Configuration.Internal;IInternalConfigConfigurationFactory;NormalizeLocationSubPath;(System.String,System.Configuration.Internal.IConfigErrorInfo);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;CreateConfigurationContext;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;CreateDeprecatedConfigContext;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;DecryptSection;(System.String,System.Configuration.ProtectedConfigurationProvider,System.Configuration.ProtectedConfigurationSection);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;DeleteStream;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;EncryptSection;(System.String,System.Configuration.ProtectedConfigurationProvider,System.Configuration.ProtectedConfigurationSection);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;GetConfigPathFromLocationSubPath;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;GetConfigType;(System.String,System.Boolean);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;GetConfigTypeName;(System.Type);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;GetRestrictedPermissions;(System.Configuration.Internal.IInternalConfigRecord,System.Security.PermissionSet,System.Boolean);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;GetStreamName;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;GetStreamNameForConfigSource;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;GetStreamVersion;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;Impersonate;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;Init;(System.Configuration.Internal.IInternalConfigRoot,System.Object[]);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;InitForConfiguration;(System.String,System.String,System.String,System.Configuration.Internal.IInternalConfigRoot,System.Object[]);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsAboveApplication;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsConfigRecordRequired;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsDefinitionAllowed;(System.String,System.Configuration.ConfigurationAllowDefinition,System.Configuration.ConfigurationAllowExeDefinition);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsFile;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsFullTrustSectionWithoutAptcaAllowed;(System.Configuration.Internal.IInternalConfigRecord);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsInitDelayed;(System.Configuration.Internal.IInternalConfigRecord);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsLocationApplicable;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsSecondaryRoot;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;IsTrustedConfigPath;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;OpenStreamForRead;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;OpenStreamForRead;(System.String,System.Boolean);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;OpenStreamForWrite;(System.String,System.String,System.Object);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;OpenStreamForWrite;(System.String,System.String,System.Object,System.Boolean);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;PrefetchAll;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;PrefetchSection;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;RequireCompleteInit;(System.Configuration.Internal.IInternalConfigRecord);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;VerifyDefinitionAllowed;(System.String,System.Configuration.ConfigurationAllowDefinition,System.Configuration.ConfigurationAllowExeDefinition,System.Configuration.Internal.IConfigErrorInfo);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;WriteCompleted;(System.String,System.Boolean,System.Object);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;WriteCompleted;(System.String,System.Boolean,System.Object,System.Boolean);summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;get_IsRemote;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;get_SupportsChangeNotifications;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;get_SupportsLocation;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;get_SupportsPath;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigHost;get_SupportsRefresh;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigRecord;GetLkgSection;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRecord;GetSection;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRecord;RefreshSection;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRecord;Remove;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigRecord;ThrowIfInitErrors;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigRecord;get_ConfigPath;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigRecord;get_HasInitErrors;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigRecord;get_StreamName;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigRoot;GetConfigRecord;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRoot;GetSection;(System.String,System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRoot;GetUniqueConfigPath;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRoot;GetUniqueConfigRecord;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRoot;Init;(System.Configuration.Internal.IInternalConfigHost,System.Boolean);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRoot;RemoveConfig;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigRoot;get_IsDesignTime;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigSettingsFactory;CompleteInit;();summary;df-generated | +| System.Configuration.Internal;IInternalConfigSettingsFactory;SetConfigurationSystem;(System.Configuration.Internal.IInternalConfigSystem,System.Boolean);summary;df-generated | +| System.Configuration.Internal;IInternalConfigSystem;GetSection;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigSystem;RefreshConfig;(System.String);summary;df-generated | +| System.Configuration.Internal;IInternalConfigSystem;get_SupportsUserConfig;();summary;df-generated | +| System.Configuration.Internal;InternalConfigEventArgs;InternalConfigEventArgs;(System.String);summary;df-generated | +| System.Configuration.Internal;InternalConfigEventArgs;get_ConfigPath;();summary;df-generated | +| System.Configuration.Internal;InternalConfigEventArgs;set_ConfigPath;(System.String);summary;df-generated | +| System.Configuration.Provider;ProviderCollection;Add;(System.Configuration.Provider.ProviderBase);summary;df-generated | +| System.Configuration.Provider;ProviderCollection;Remove;(System.String);summary;df-generated | +| System.Configuration.Provider;ProviderCollection;SetReadOnly;();summary;df-generated | +| System.Configuration.Provider;ProviderCollection;get_Count;();summary;df-generated | +| System.Configuration.Provider;ProviderCollection;get_IsSynchronized;();summary;df-generated | +| System.Configuration.Provider;ProviderException;ProviderException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Configuration.Provider;ProviderException;ProviderException;(System.String);summary;df-generated | +| System.Configuration.Provider;ProviderException;ProviderException;(System.String,System.Exception);summary;df-generated | +| System.Configuration;AppSettingsSection;GetRuntimeObject;();summary;df-generated | +| System.Configuration;AppSettingsSection;get_Properties;();summary;df-generated | +| System.Configuration;AppSettingsSection;set_File;(System.String);summary;df-generated | +| System.Configuration;ApplicationSettingsBase;ApplicationSettingsBase;(System.ComponentModel.IComponent);summary;df-generated | +| System.Configuration;ApplicationSettingsBase;GetPreviousVersion;(System.String);summary;df-generated | +| System.Configuration;ApplicationSettingsBase;OnPropertyChanged;(System.Object,System.ComponentModel.PropertyChangedEventArgs);summary;df-generated | +| System.Configuration;ApplicationSettingsBase;OnSettingChanging;(System.Object,System.Configuration.SettingChangingEventArgs);summary;df-generated | +| System.Configuration;ApplicationSettingsBase;OnSettingsLoaded;(System.Object,System.Configuration.SettingsLoadedEventArgs);summary;df-generated | +| System.Configuration;ApplicationSettingsBase;OnSettingsSaving;(System.Object,System.ComponentModel.CancelEventArgs);summary;df-generated | +| System.Configuration;ApplicationSettingsBase;Reload;();summary;df-generated | +| System.Configuration;ApplicationSettingsBase;Reset;();summary;df-generated | +| System.Configuration;ApplicationSettingsBase;Save;();summary;df-generated | +| System.Configuration;ApplicationSettingsBase;Upgrade;();summary;df-generated | +| System.Configuration;ApplicationSettingsBase;set_Item;(System.String,System.Object);summary;df-generated | +| System.Configuration;CallbackValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;CallbackValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;ClientSettingsSection;get_Properties;();summary;df-generated | +| System.Configuration;CommaDelimitedStringCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;CommaDelimitedStringCollection;SetReadOnly;();summary;df-generated | +| System.Configuration;CommaDelimitedStringCollection;get_IsModified;();summary;df-generated | +| System.Configuration;CommaDelimitedStringCollection;get_IsReadOnly;();summary;df-generated | +| System.Configuration;ConfigXmlDocument;get_LineNumber;();summary;df-generated | +| System.Configuration;Configuration;GetSection;(System.String);summary;df-generated | +| System.Configuration;Configuration;Save;();summary;df-generated | +| System.Configuration;Configuration;Save;(System.Configuration.ConfigurationSaveMode);summary;df-generated | +| System.Configuration;Configuration;Save;(System.Configuration.ConfigurationSaveMode,System.Boolean);summary;df-generated | +| System.Configuration;Configuration;SaveAs;(System.String);summary;df-generated | +| System.Configuration;Configuration;SaveAs;(System.String,System.Configuration.ConfigurationSaveMode);summary;df-generated | +| System.Configuration;Configuration;SaveAs;(System.String,System.Configuration.ConfigurationSaveMode,System.Boolean);summary;df-generated | +| System.Configuration;Configuration;get_AppSettings;();summary;df-generated | +| System.Configuration;Configuration;get_ConnectionStrings;();summary;df-generated | +| System.Configuration;Configuration;get_EvaluationContext;();summary;df-generated | +| System.Configuration;Configuration;get_FilePath;();summary;df-generated | +| System.Configuration;Configuration;get_HasFile;();summary;df-generated | +| System.Configuration;Configuration;get_Locations;();summary;df-generated | +| System.Configuration;Configuration;get_NamespaceDeclared;();summary;df-generated | +| System.Configuration;Configuration;get_TargetFramework;();summary;df-generated | +| System.Configuration;Configuration;set_NamespaceDeclared;(System.Boolean);summary;df-generated | +| System.Configuration;Configuration;set_TargetFramework;(System.Runtime.Versioning.FrameworkName);summary;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;ConfigurationCollectionAttribute;(System.Type);summary;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;get_CollectionType;();summary;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;get_ItemType;();summary;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;set_CollectionType;(System.Configuration.ConfigurationElementCollectionType);summary;df-generated | +| System.Configuration;ConfigurationConverterBase;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Configuration;ConfigurationConverterBase;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Configuration;ConfigurationElement;Equals;(System.Object);summary;df-generated | +| System.Configuration;ConfigurationElement;GetHashCode;();summary;df-generated | +| System.Configuration;ConfigurationElement;Init;();summary;df-generated | +| System.Configuration;ConfigurationElement;InitializeDefault;();summary;df-generated | +| System.Configuration;ConfigurationElement;IsModified;();summary;df-generated | +| System.Configuration;ConfigurationElement;IsReadOnly;();summary;df-generated | +| System.Configuration;ConfigurationElement;ListErrors;(System.Collections.IList);summary;df-generated | +| System.Configuration;ConfigurationElement;OnDeserializeUnrecognizedAttribute;(System.String,System.String);summary;df-generated | +| System.Configuration;ConfigurationElement;OnDeserializeUnrecognizedElement;(System.String,System.Xml.XmlReader);summary;df-generated | +| System.Configuration;ConfigurationElement;OnRequiredPropertyNotFound;(System.String);summary;df-generated | +| System.Configuration;ConfigurationElement;PostDeserialize;();summary;df-generated | +| System.Configuration;ConfigurationElement;PreSerialize;(System.Xml.XmlWriter);summary;df-generated | +| System.Configuration;ConfigurationElement;ResetModified;();summary;df-generated | +| System.Configuration;ConfigurationElement;SetPropertyValue;(System.Configuration.ConfigurationProperty,System.Object,System.Boolean);summary;df-generated | +| System.Configuration;ConfigurationElement;SetReadOnly;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_CurrentConfiguration;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_ElementInformation;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_HasContext;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_Item;(System.Configuration.ConfigurationProperty);summary;df-generated | +| System.Configuration;ConfigurationElement;get_LockAllAttributesExcept;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_LockAllElementsExcept;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_LockAttributes;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_LockElements;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_LockItem;();summary;df-generated | +| System.Configuration;ConfigurationElement;get_Properties;();summary;df-generated | +| System.Configuration;ConfigurationElement;set_Item;(System.Configuration.ConfigurationProperty,System.Object);summary;df-generated | +| System.Configuration;ConfigurationElement;set_Item;(System.String,System.Object);summary;df-generated | +| System.Configuration;ConfigurationElement;set_LockItem;(System.Boolean);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseClear;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseGet;(System.Int32);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseGet;(System.Object);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseGetAllKeys;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseGetKey;(System.Int32);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseIndexOf;(System.Configuration.ConfigurationElement);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseIsRemoved;(System.Object);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseRemove;(System.Object);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;BaseRemoveAt;(System.Int32);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;CreateNewElement;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;CreateNewElement;(System.String);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;Equals;(System.Object);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;GetElementKey;(System.Configuration.ConfigurationElement);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;GetHashCode;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;IsElementName;(System.String);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;IsElementRemovable;(System.Configuration.ConfigurationElement);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;IsModified;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;IsReadOnly;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;OnDeserializeUnrecognizedElement;(System.String,System.Xml.XmlReader);summary;df-generated | +| System.Configuration;ConfigurationElementCollection;ResetModified;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;SetReadOnly;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;get_CollectionType;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;get_Count;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;get_ElementName;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;get_EmitClear;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;get_IsSynchronized;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;get_SyncRoot;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;get_ThrowOnDuplicate;();summary;df-generated | +| System.Configuration;ConfigurationElementCollection;set_EmitClear;(System.Boolean);summary;df-generated | +| System.Configuration;ConfigurationElementProperty;ConfigurationElementProperty;(System.Configuration.ConfigurationValidatorBase);summary;df-generated | +| System.Configuration;ConfigurationElementProperty;get_Validator;();summary;df-generated | +| System.Configuration;ConfigurationErrorsException;ConfigurationErrorsException;(System.String);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;ConfigurationErrorsException;(System.String,System.Exception);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;ConfigurationErrorsException;(System.String,System.Exception,System.Xml.XmlNode);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;ConfigurationErrorsException;(System.String,System.Exception,System.Xml.XmlReader);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;ConfigurationErrorsException;(System.String,System.String,System.Int32);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;ConfigurationErrorsException;(System.String,System.Xml.XmlNode);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;ConfigurationErrorsException;(System.String,System.Xml.XmlReader);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;GetLineNumber;(System.Xml.XmlNode);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;GetLineNumber;(System.Xml.XmlReader);summary;df-generated | +| System.Configuration;ConfigurationErrorsException;get_Line;();summary;df-generated | +| System.Configuration;ConfigurationException;ConfigurationException;(System.String);summary;df-generated | +| System.Configuration;ConfigurationException;ConfigurationException;(System.String,System.Exception);summary;df-generated | +| System.Configuration;ConfigurationException;ConfigurationException;(System.String,System.Exception,System.Xml.XmlNode);summary;df-generated | +| System.Configuration;ConfigurationException;ConfigurationException;(System.String,System.String,System.Int32);summary;df-generated | +| System.Configuration;ConfigurationException;ConfigurationException;(System.String,System.Xml.XmlNode);summary;df-generated | +| System.Configuration;ConfigurationException;GetXmlNodeLineNumber;(System.Xml.XmlNode);summary;df-generated | +| System.Configuration;ConfigurationException;get_Line;();summary;df-generated | +| System.Configuration;ConfigurationException;get_Message;();summary;df-generated | +| System.Configuration;ConfigurationFileMap;ConfigurationFileMap;(System.String);summary;df-generated | +| System.Configuration;ConfigurationFileMap;get_MachineConfigFilename;();summary;df-generated | +| System.Configuration;ConfigurationFileMap;set_MachineConfigFilename;(System.String);summary;df-generated | +| System.Configuration;ConfigurationLocation;get_Path;();summary;df-generated | +| System.Configuration;ConfigurationLocationCollection;get_Item;(System.Int32);summary;df-generated | +| System.Configuration;ConfigurationLockCollection;Contains;(System.String);summary;df-generated | +| System.Configuration;ConfigurationLockCollection;IsReadOnly;(System.String);summary;df-generated | +| System.Configuration;ConfigurationLockCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;ConfigurationLockCollection;get_Count;();summary;df-generated | +| System.Configuration;ConfigurationLockCollection;get_HasParentElements;();summary;df-generated | +| System.Configuration;ConfigurationLockCollection;get_IsModified;();summary;df-generated | +| System.Configuration;ConfigurationLockCollection;get_IsSynchronized;();summary;df-generated | +| System.Configuration;ConfigurationManager;GetSection;(System.String);summary;df-generated | +| System.Configuration;ConfigurationManager;OpenExeConfiguration;(System.Configuration.ConfigurationUserLevel);summary;df-generated | +| System.Configuration;ConfigurationManager;OpenMachineConfiguration;();summary;df-generated | +| System.Configuration;ConfigurationManager;RefreshSection;(System.String);summary;df-generated | +| System.Configuration;ConfigurationManager;get_AppSettings;();summary;df-generated | +| System.Configuration;ConfigurationManager;get_ConnectionStrings;();summary;df-generated | +| System.Configuration;ConfigurationPermission;ConfigurationPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Configuration;ConfigurationPermission;Copy;();summary;df-generated | +| System.Configuration;ConfigurationPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Configuration;ConfigurationPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Configuration;ConfigurationPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Configuration;ConfigurationPermission;IsUnrestricted;();summary;df-generated | +| System.Configuration;ConfigurationPermission;ToXml;();summary;df-generated | +| System.Configuration;ConfigurationPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Configuration;ConfigurationPermissionAttribute;ConfigurationPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Configuration;ConfigurationPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Configuration;ConfigurationProperty;ConfigurationProperty;(System.String,System.Type);summary;df-generated | +| System.Configuration;ConfigurationProperty;ConfigurationProperty;(System.String,System.Type,System.Object);summary;df-generated | +| System.Configuration;ConfigurationProperty;ConfigurationProperty;(System.String,System.Type,System.Object,System.ComponentModel.TypeConverter,System.Configuration.ConfigurationValidatorBase,System.Configuration.ConfigurationPropertyOptions);summary;df-generated | +| System.Configuration;ConfigurationProperty;ConfigurationProperty;(System.String,System.Type,System.Object,System.Configuration.ConfigurationPropertyOptions);summary;df-generated | +| System.Configuration;ConfigurationProperty;get_DefaultValue;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_Description;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_IsAssemblyStringTransformationRequired;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_IsDefaultCollection;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_IsKey;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_IsRequired;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_IsTypeStringTransformationRequired;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_IsVersionCheckRequired;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_Name;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_Type;();summary;df-generated | +| System.Configuration;ConfigurationProperty;get_Validator;();summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;ConfigurationPropertyAttribute;(System.String);summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;get_DefaultValue;();summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;get_IsDefaultCollection;();summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;get_IsKey;();summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;get_IsRequired;();summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;get_Name;();summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;get_Options;();summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;set_DefaultValue;(System.Object);summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;set_IsDefaultCollection;(System.Boolean);summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;set_IsKey;(System.Boolean);summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;set_IsRequired;(System.Boolean);summary;df-generated | +| System.Configuration;ConfigurationPropertyAttribute;set_Options;(System.Configuration.ConfigurationPropertyOptions);summary;df-generated | +| System.Configuration;ConfigurationPropertyCollection;Contains;(System.String);summary;df-generated | +| System.Configuration;ConfigurationPropertyCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;ConfigurationPropertyCollection;get_Count;();summary;df-generated | +| System.Configuration;ConfigurationPropertyCollection;get_IsSynchronized;();summary;df-generated | +| System.Configuration;ConfigurationSection;IsModified;();summary;df-generated | +| System.Configuration;ConfigurationSection;ResetModified;();summary;df-generated | +| System.Configuration;ConfigurationSection;SerializeSection;(System.Configuration.ConfigurationElement,System.String,System.Configuration.ConfigurationSaveMode);summary;df-generated | +| System.Configuration;ConfigurationSection;ShouldSerializeElementInTargetVersion;(System.Configuration.ConfigurationElement,System.String,System.Runtime.Versioning.FrameworkName);summary;df-generated | +| System.Configuration;ConfigurationSection;ShouldSerializePropertyInTargetVersion;(System.Configuration.ConfigurationProperty,System.String,System.Runtime.Versioning.FrameworkName,System.Configuration.ConfigurationElement);summary;df-generated | +| System.Configuration;ConfigurationSection;ShouldSerializeSectionInTargetVersion;(System.Runtime.Versioning.FrameworkName);summary;df-generated | +| System.Configuration;ConfigurationSection;get_SectionInformation;();summary;df-generated | +| System.Configuration;ConfigurationSectionCollection;CopyTo;(System.Configuration.ConfigurationSection[],System.Int32);summary;df-generated | +| System.Configuration;ConfigurationSectionCollection;Get;(System.Int32);summary;df-generated | +| System.Configuration;ConfigurationSectionCollection;Get;(System.String);summary;df-generated | +| System.Configuration;ConfigurationSectionCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;ConfigurationSectionCollection;RemoveAt;(System.Int32);summary;df-generated | +| System.Configuration;ConfigurationSectionCollection;get_Item;(System.Int32);summary;df-generated | +| System.Configuration;ConfigurationSectionCollection;get_Item;(System.String);summary;df-generated | +| System.Configuration;ConfigurationSectionGroup;ForceDeclaration;();summary;df-generated | +| System.Configuration;ConfigurationSectionGroup;ForceDeclaration;(System.Boolean);summary;df-generated | +| System.Configuration;ConfigurationSectionGroup;ShouldSerializeSectionGroupInTargetVersion;(System.Runtime.Versioning.FrameworkName);summary;df-generated | +| System.Configuration;ConfigurationSectionGroup;get_IsDeclarationRequired;();summary;df-generated | +| System.Configuration;ConfigurationSectionGroup;get_IsDeclared;();summary;df-generated | +| System.Configuration;ConfigurationSectionGroup;get_Name;();summary;df-generated | +| System.Configuration;ConfigurationSectionGroup;get_SectionGroupName;();summary;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;RemoveAt;(System.Int32);summary;df-generated | +| System.Configuration;ConfigurationSettings;GetConfig;(System.String);summary;df-generated | +| System.Configuration;ConfigurationSettings;get_AppSettings;();summary;df-generated | +| System.Configuration;ConfigurationValidatorAttribute;ConfigurationValidatorAttribute;(System.Type);summary;df-generated | +| System.Configuration;ConfigurationValidatorAttribute;get_ValidatorInstance;();summary;df-generated | +| System.Configuration;ConfigurationValidatorAttribute;get_ValidatorType;();summary;df-generated | +| System.Configuration;ConfigurationValidatorBase;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;ConfigurationValidatorBase;Validate;(System.Object);summary;df-generated | +| System.Configuration;ConnectionStringSettings;ConnectionStringSettings;(System.String,System.String);summary;df-generated | +| System.Configuration;ConnectionStringSettings;ConnectionStringSettings;(System.String,System.String,System.String);summary;df-generated | +| System.Configuration;ConnectionStringSettings;get_Properties;();summary;df-generated | +| System.Configuration;ConnectionStringSettings;set_ConnectionString;(System.String);summary;df-generated | +| System.Configuration;ConnectionStringSettings;set_Name;(System.String);summary;df-generated | +| System.Configuration;ConnectionStringSettings;set_ProviderName;(System.String);summary;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;CreateNewElement;();summary;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;IndexOf;(System.Configuration.ConnectionStringSettings);summary;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;Remove;(System.Configuration.ConnectionStringSettings);summary;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;RemoveAt;(System.Int32);summary;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;get_Item;(System.Int32);summary;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;get_Item;(System.String);summary;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;get_Properties;();summary;df-generated | +| System.Configuration;ConnectionStringsSection;get_Properties;();summary;df-generated | +| System.Configuration;ContextInformation;GetSection;(System.String);summary;df-generated | +| System.Configuration;ContextInformation;get_IsMachineLevel;();summary;df-generated | +| System.Configuration;DefaultSection;DeserializeSection;(System.Xml.XmlReader);summary;df-generated | +| System.Configuration;DefaultSection;IsModified;();summary;df-generated | +| System.Configuration;DefaultSection;Reset;(System.Configuration.ConfigurationElement);summary;df-generated | +| System.Configuration;DefaultSection;ResetModified;();summary;df-generated | +| System.Configuration;DefaultSection;get_Properties;();summary;df-generated | +| System.Configuration;DefaultValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;DefaultValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;DictionarySectionHandler;get_KeyAttributeName;();summary;df-generated | +| System.Configuration;DictionarySectionHandler;get_ValueAttributeName;();summary;df-generated | +| System.Configuration;DpapiProtectedConfigurationProvider;Decrypt;(System.Xml.XmlNode);summary;df-generated | +| System.Configuration;DpapiProtectedConfigurationProvider;Encrypt;(System.Xml.XmlNode);summary;df-generated | +| System.Configuration;DpapiProtectedConfigurationProvider;get_UseMachineProtection;();summary;df-generated | +| System.Configuration;ElementInformation;get_Errors;();summary;df-generated | +| System.Configuration;ElementInformation;get_IsCollection;();summary;df-generated | +| System.Configuration;ElementInformation;get_IsLocked;();summary;df-generated | +| System.Configuration;ElementInformation;get_IsPresent;();summary;df-generated | +| System.Configuration;ElementInformation;get_LineNumber;();summary;df-generated | +| System.Configuration;ElementInformation;get_Properties;();summary;df-generated | +| System.Configuration;ElementInformation;get_Source;();summary;df-generated | +| System.Configuration;ElementInformation;get_Type;();summary;df-generated | +| System.Configuration;ElementInformation;get_Validator;();summary;df-generated | +| System.Configuration;ExeConfigurationFileMap;Clone;();summary;df-generated | +| System.Configuration;ExeConfigurationFileMap;ExeConfigurationFileMap;(System.String);summary;df-generated | +| System.Configuration;ExeConfigurationFileMap;get_ExeConfigFilename;();summary;df-generated | +| System.Configuration;ExeConfigurationFileMap;get_LocalUserConfigFilename;();summary;df-generated | +| System.Configuration;ExeConfigurationFileMap;get_RoamingUserConfigFilename;();summary;df-generated | +| System.Configuration;ExeConfigurationFileMap;set_ExeConfigFilename;(System.String);summary;df-generated | +| System.Configuration;ExeConfigurationFileMap;set_LocalUserConfigFilename;(System.String);summary;df-generated | +| System.Configuration;ExeConfigurationFileMap;set_RoamingUserConfigFilename;(System.String);summary;df-generated | +| System.Configuration;ExeContext;get_ExePath;();summary;df-generated | +| System.Configuration;ExeContext;get_UserLevel;();summary;df-generated | +| System.Configuration;GenericEnumConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Configuration;IApplicationSettingsProvider;GetPreviousVersion;(System.Configuration.SettingsContext,System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;IApplicationSettingsProvider;Reset;(System.Configuration.SettingsContext);summary;df-generated | +| System.Configuration;IApplicationSettingsProvider;Upgrade;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection);summary;df-generated | +| System.Configuration;IConfigurationSectionHandler;Create;(System.Object,System.Object,System.Xml.XmlNode);summary;df-generated | +| System.Configuration;IConfigurationSystem;GetConfig;(System.String);summary;df-generated | +| System.Configuration;IConfigurationSystem;Init;();summary;df-generated | +| System.Configuration;IPersistComponentSettings;LoadComponentSettings;();summary;df-generated | +| System.Configuration;IPersistComponentSettings;ResetComponentSettings;();summary;df-generated | +| System.Configuration;IPersistComponentSettings;SaveComponentSettings;();summary;df-generated | +| System.Configuration;IPersistComponentSettings;get_SaveSettings;();summary;df-generated | +| System.Configuration;IPersistComponentSettings;get_SettingsKey;();summary;df-generated | +| System.Configuration;IPersistComponentSettings;set_SaveSettings;(System.Boolean);summary;df-generated | +| System.Configuration;IPersistComponentSettings;set_SettingsKey;(System.String);summary;df-generated | +| System.Configuration;ISettingsProviderService;GetSettingsProvider;(System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;IdnElement;get_Enabled;();summary;df-generated | +| System.Configuration;IdnElement;set_Enabled;(System.UriIdnScope);summary;df-generated | +| System.Configuration;IgnoreSection;DeserializeSection;(System.Xml.XmlReader);summary;df-generated | +| System.Configuration;IgnoreSection;IsModified;();summary;df-generated | +| System.Configuration;IgnoreSection;Reset;(System.Configuration.ConfigurationElement);summary;df-generated | +| System.Configuration;IgnoreSection;ResetModified;();summary;df-generated | +| System.Configuration;IgnoreSection;get_Properties;();summary;df-generated | +| System.Configuration;IgnoreSectionHandler;Create;(System.Object,System.Object,System.Xml.XmlNode);summary;df-generated | +| System.Configuration;InfiniteIntConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Configuration;InfiniteIntConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Configuration;IntegerValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;IntegerValidator;IntegerValidator;(System.Int32,System.Int32);summary;df-generated | +| System.Configuration;IntegerValidator;IntegerValidator;(System.Int32,System.Int32,System.Boolean);summary;df-generated | +| System.Configuration;IntegerValidator;IntegerValidator;(System.Int32,System.Int32,System.Boolean,System.Int32);summary;df-generated | +| System.Configuration;IntegerValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;IntegerValidatorAttribute;get_ExcludeRange;();summary;df-generated | +| System.Configuration;IntegerValidatorAttribute;get_MaxValue;();summary;df-generated | +| System.Configuration;IntegerValidatorAttribute;get_MinValue;();summary;df-generated | +| System.Configuration;IntegerValidatorAttribute;get_ValidatorInstance;();summary;df-generated | +| System.Configuration;IntegerValidatorAttribute;set_ExcludeRange;(System.Boolean);summary;df-generated | +| System.Configuration;IntegerValidatorAttribute;set_MaxValue;(System.Int32);summary;df-generated | +| System.Configuration;IntegerValidatorAttribute;set_MinValue;(System.Int32);summary;df-generated | +| System.Configuration;IriParsingElement;get_Enabled;();summary;df-generated | +| System.Configuration;IriParsingElement;set_Enabled;(System.Boolean);summary;df-generated | +| System.Configuration;KeyValueConfigurationCollection;Add;(System.String,System.String);summary;df-generated | +| System.Configuration;KeyValueConfigurationCollection;CreateNewElement;();summary;df-generated | +| System.Configuration;KeyValueConfigurationCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;KeyValueConfigurationCollection;get_AllKeys;();summary;df-generated | +| System.Configuration;KeyValueConfigurationCollection;get_Item;(System.String);summary;df-generated | +| System.Configuration;KeyValueConfigurationCollection;get_Properties;();summary;df-generated | +| System.Configuration;KeyValueConfigurationCollection;get_ThrowOnDuplicate;();summary;df-generated | +| System.Configuration;KeyValueConfigurationElement;Init;();summary;df-generated | +| System.Configuration;KeyValueConfigurationElement;get_Properties;();summary;df-generated | +| System.Configuration;KeyValueConfigurationElement;set_Value;(System.String);summary;df-generated | +| System.Configuration;LocalFileSettingsProvider;GetPreviousVersion;(System.Configuration.SettingsContext,System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;LocalFileSettingsProvider;GetPropertyValues;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection);summary;df-generated | +| System.Configuration;LocalFileSettingsProvider;Reset;(System.Configuration.SettingsContext);summary;df-generated | +| System.Configuration;LocalFileSettingsProvider;SetPropertyValues;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyValueCollection);summary;df-generated | +| System.Configuration;LocalFileSettingsProvider;Upgrade;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection);summary;df-generated | +| System.Configuration;LongValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;LongValidator;LongValidator;(System.Int64,System.Int64);summary;df-generated | +| System.Configuration;LongValidator;LongValidator;(System.Int64,System.Int64,System.Boolean);summary;df-generated | +| System.Configuration;LongValidator;LongValidator;(System.Int64,System.Int64,System.Boolean,System.Int64);summary;df-generated | +| System.Configuration;LongValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;LongValidatorAttribute;get_ExcludeRange;();summary;df-generated | +| System.Configuration;LongValidatorAttribute;get_MaxValue;();summary;df-generated | +| System.Configuration;LongValidatorAttribute;get_MinValue;();summary;df-generated | +| System.Configuration;LongValidatorAttribute;get_ValidatorInstance;();summary;df-generated | +| System.Configuration;LongValidatorAttribute;set_ExcludeRange;(System.Boolean);summary;df-generated | +| System.Configuration;LongValidatorAttribute;set_MaxValue;(System.Int64);summary;df-generated | +| System.Configuration;LongValidatorAttribute;set_MinValue;(System.Int64);summary;df-generated | +| System.Configuration;NameValueConfigurationCollection;CreateNewElement;();summary;df-generated | +| System.Configuration;NameValueConfigurationCollection;Remove;(System.Configuration.NameValueConfigurationElement);summary;df-generated | +| System.Configuration;NameValueConfigurationCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;NameValueConfigurationCollection;get_AllKeys;();summary;df-generated | +| System.Configuration;NameValueConfigurationCollection;get_Item;(System.String);summary;df-generated | +| System.Configuration;NameValueConfigurationCollection;get_Properties;();summary;df-generated | +| System.Configuration;NameValueConfigurationElement;NameValueConfigurationElement;(System.String,System.String);summary;df-generated | +| System.Configuration;NameValueConfigurationElement;get_Properties;();summary;df-generated | +| System.Configuration;NameValueConfigurationElement;set_Value;(System.String);summary;df-generated | +| System.Configuration;NameValueSectionHandler;get_KeyAttributeName;();summary;df-generated | +| System.Configuration;NameValueSectionHandler;get_ValueAttributeName;();summary;df-generated | +| System.Configuration;PositiveTimeSpanValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;PositiveTimeSpanValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;PositiveTimeSpanValidatorAttribute;get_ValidatorInstance;();summary;df-generated | +| System.Configuration;PropertyInformation;get_Converter;();summary;df-generated | +| System.Configuration;PropertyInformation;get_DefaultValue;();summary;df-generated | +| System.Configuration;PropertyInformation;get_Description;();summary;df-generated | +| System.Configuration;PropertyInformation;get_IsKey;();summary;df-generated | +| System.Configuration;PropertyInformation;get_IsLocked;();summary;df-generated | +| System.Configuration;PropertyInformation;get_IsModified;();summary;df-generated | +| System.Configuration;PropertyInformation;get_IsRequired;();summary;df-generated | +| System.Configuration;PropertyInformation;get_LineNumber;();summary;df-generated | +| System.Configuration;PropertyInformation;get_Name;();summary;df-generated | +| System.Configuration;PropertyInformation;get_Source;();summary;df-generated | +| System.Configuration;PropertyInformation;get_Type;();summary;df-generated | +| System.Configuration;PropertyInformation;get_Validator;();summary;df-generated | +| System.Configuration;PropertyInformation;get_ValueOrigin;();summary;df-generated | +| System.Configuration;PropertyInformation;set_Value;(System.Object);summary;df-generated | +| System.Configuration;ProtectedConfiguration;get_DefaultProvider;();summary;df-generated | +| System.Configuration;ProtectedConfiguration;get_Providers;();summary;df-generated | +| System.Configuration;ProtectedConfigurationProvider;Decrypt;(System.Xml.XmlNode);summary;df-generated | +| System.Configuration;ProtectedConfigurationProvider;Encrypt;(System.Xml.XmlNode);summary;df-generated | +| System.Configuration;ProtectedConfigurationProviderCollection;Add;(System.Configuration.Provider.ProviderBase);summary;df-generated | +| System.Configuration;ProtectedConfigurationSection;get_Properties;();summary;df-generated | +| System.Configuration;ProtectedConfigurationSection;set_DefaultProvider;(System.String);summary;df-generated | +| System.Configuration;ProviderSettings;IsModified;();summary;df-generated | +| System.Configuration;ProviderSettings;OnDeserializeUnrecognizedAttribute;(System.String,System.String);summary;df-generated | +| System.Configuration;ProviderSettings;ProviderSettings;(System.String,System.String);summary;df-generated | +| System.Configuration;ProviderSettings;set_Name;(System.String);summary;df-generated | +| System.Configuration;ProviderSettings;set_Type;(System.String);summary;df-generated | +| System.Configuration;ProviderSettingsCollection;CreateNewElement;();summary;df-generated | +| System.Configuration;ProviderSettingsCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;ProviderSettingsCollection;get_Item;(System.Int32);summary;df-generated | +| System.Configuration;ProviderSettingsCollection;get_Item;(System.String);summary;df-generated | +| System.Configuration;ProviderSettingsCollection;get_Properties;();summary;df-generated | +| System.Configuration;RegexStringValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;RegexStringValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;RegexStringValidatorAttribute;RegexStringValidatorAttribute;(System.String);summary;df-generated | +| System.Configuration;RegexStringValidatorAttribute;get_Regex;();summary;df-generated | +| System.Configuration;RegexStringValidatorAttribute;get_ValidatorInstance;();summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;AddKey;(System.Int32,System.Boolean);summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;Decrypt;(System.Xml.XmlNode);summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;DeleteKey;();summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;Encrypt;(System.Xml.XmlNode);summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;ExportKey;(System.String,System.Boolean);summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;ImportKey;(System.String,System.Boolean);summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;get_CspProviderName;();summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;get_KeyContainerName;();summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;get_RsaPublicKey;();summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;get_UseFIPS;();summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;get_UseMachineContainer;();summary;df-generated | +| System.Configuration;RsaProtectedConfigurationProvider;get_UseOAEP;();summary;df-generated | +| System.Configuration;SchemeSettingElement;get_GenericUriParserOptions;();summary;df-generated | +| System.Configuration;SchemeSettingElement;get_Properties;();summary;df-generated | +| System.Configuration;SchemeSettingElementCollection;CreateNewElement;();summary;df-generated | +| System.Configuration;SchemeSettingElementCollection;IndexOf;(System.Configuration.SchemeSettingElement);summary;df-generated | +| System.Configuration;SchemeSettingElementCollection;get_CollectionType;();summary;df-generated | +| System.Configuration;SchemeSettingElementCollection;get_Item;(System.Int32);summary;df-generated | +| System.Configuration;SchemeSettingElementCollection;get_Item;(System.String);summary;df-generated | +| System.Configuration;SectionInformation;ForceDeclaration;();summary;df-generated | +| System.Configuration;SectionInformation;ForceDeclaration;(System.Boolean);summary;df-generated | +| System.Configuration;SectionInformation;GetParentSection;();summary;df-generated | +| System.Configuration;SectionInformation;GetRawXml;();summary;df-generated | +| System.Configuration;SectionInformation;ProtectSection;(System.String);summary;df-generated | +| System.Configuration;SectionInformation;RevertToParent;();summary;df-generated | +| System.Configuration;SectionInformation;SetRawXml;(System.String);summary;df-generated | +| System.Configuration;SectionInformation;UnprotectSection;();summary;df-generated | +| System.Configuration;SectionInformation;get_AllowDefinition;();summary;df-generated | +| System.Configuration;SectionInformation;get_AllowExeDefinition;();summary;df-generated | +| System.Configuration;SectionInformation;get_AllowLocation;();summary;df-generated | +| System.Configuration;SectionInformation;get_AllowOverride;();summary;df-generated | +| System.Configuration;SectionInformation;get_ForceSave;();summary;df-generated | +| System.Configuration;SectionInformation;get_InheritInChildApplications;();summary;df-generated | +| System.Configuration;SectionInformation;get_IsDeclarationRequired;();summary;df-generated | +| System.Configuration;SectionInformation;get_IsDeclared;();summary;df-generated | +| System.Configuration;SectionInformation;get_IsLocked;();summary;df-generated | +| System.Configuration;SectionInformation;get_IsProtected;();summary;df-generated | +| System.Configuration;SectionInformation;get_Name;();summary;df-generated | +| System.Configuration;SectionInformation;get_OverrideMode;();summary;df-generated | +| System.Configuration;SectionInformation;get_OverrideModeDefault;();summary;df-generated | +| System.Configuration;SectionInformation;get_OverrideModeEffective;();summary;df-generated | +| System.Configuration;SectionInformation;get_RequirePermission;();summary;df-generated | +| System.Configuration;SectionInformation;get_RestartOnExternalChanges;();summary;df-generated | +| System.Configuration;SectionInformation;get_SectionName;();summary;df-generated | +| System.Configuration;SectionInformation;set_AllowDefinition;(System.Configuration.ConfigurationAllowDefinition);summary;df-generated | +| System.Configuration;SectionInformation;set_AllowExeDefinition;(System.Configuration.ConfigurationAllowExeDefinition);summary;df-generated | +| System.Configuration;SectionInformation;set_AllowLocation;(System.Boolean);summary;df-generated | +| System.Configuration;SectionInformation;set_AllowOverride;(System.Boolean);summary;df-generated | +| System.Configuration;SectionInformation;set_ForceSave;(System.Boolean);summary;df-generated | +| System.Configuration;SectionInformation;set_InheritInChildApplications;(System.Boolean);summary;df-generated | +| System.Configuration;SectionInformation;set_OverrideMode;(System.Configuration.OverrideMode);summary;df-generated | +| System.Configuration;SectionInformation;set_OverrideModeDefault;(System.Configuration.OverrideMode);summary;df-generated | +| System.Configuration;SectionInformation;set_RequirePermission;(System.Boolean);summary;df-generated | +| System.Configuration;SectionInformation;set_RestartOnExternalChanges;(System.Boolean);summary;df-generated | +| System.Configuration;SettingElement;Equals;(System.Object);summary;df-generated | +| System.Configuration;SettingElement;GetHashCode;();summary;df-generated | +| System.Configuration;SettingElement;SettingElement;(System.String,System.Configuration.SettingsSerializeAs);summary;df-generated | +| System.Configuration;SettingElement;get_Properties;();summary;df-generated | +| System.Configuration;SettingElement;get_SerializeAs;();summary;df-generated | +| System.Configuration;SettingElement;set_Name;(System.String);summary;df-generated | +| System.Configuration;SettingElement;set_SerializeAs;(System.Configuration.SettingsSerializeAs);summary;df-generated | +| System.Configuration;SettingElement;set_Value;(System.Configuration.SettingValueElement);summary;df-generated | +| System.Configuration;SettingElementCollection;CreateNewElement;();summary;df-generated | +| System.Configuration;SettingElementCollection;Get;(System.String);summary;df-generated | +| System.Configuration;SettingElementCollection;Remove;(System.Configuration.SettingElement);summary;df-generated | +| System.Configuration;SettingElementCollection;get_CollectionType;();summary;df-generated | +| System.Configuration;SettingElementCollection;get_ElementName;();summary;df-generated | +| System.Configuration;SettingValueElement;DeserializeElement;(System.Xml.XmlReader,System.Boolean);summary;df-generated | +| System.Configuration;SettingValueElement;Equals;(System.Object);summary;df-generated | +| System.Configuration;SettingValueElement;GetHashCode;();summary;df-generated | +| System.Configuration;SettingValueElement;IsModified;();summary;df-generated | +| System.Configuration;SettingValueElement;ResetModified;();summary;df-generated | +| System.Configuration;SettingValueElement;get_Properties;();summary;df-generated | +| System.Configuration;SettingsAttributeDictionary;SettingsAttributeDictionary;(System.Configuration.SettingsAttributeDictionary);summary;df-generated | +| System.Configuration;SettingsAttributeDictionary;SettingsAttributeDictionary;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Configuration;SettingsBase;Save;();summary;df-generated | +| System.Configuration;SettingsBase;get_IsSynchronized;();summary;df-generated | +| System.Configuration;SettingsBase;set_Item;(System.String,System.Object);summary;df-generated | +| System.Configuration;SettingsContext;SettingsContext;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Configuration;SettingsManageabilityAttribute;SettingsManageabilityAttribute;(System.Configuration.SettingsManageability);summary;df-generated | +| System.Configuration;SettingsManageabilityAttribute;get_Manageability;();summary;df-generated | +| System.Configuration;SettingsProperty;SettingsProperty;(System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;SettingsProperty;SettingsProperty;(System.String);summary;df-generated | +| System.Configuration;SettingsProperty;SettingsProperty;(System.String,System.Type,System.Configuration.SettingsProvider,System.Boolean,System.Object,System.Configuration.SettingsSerializeAs,System.Configuration.SettingsAttributeDictionary,System.Boolean,System.Boolean);summary;df-generated | +| System.Configuration;SettingsProperty;get_Attributes;();summary;df-generated | +| System.Configuration;SettingsProperty;get_DefaultValue;();summary;df-generated | +| System.Configuration;SettingsProperty;get_IsReadOnly;();summary;df-generated | +| System.Configuration;SettingsProperty;get_Name;();summary;df-generated | +| System.Configuration;SettingsProperty;get_PropertyType;();summary;df-generated | +| System.Configuration;SettingsProperty;get_Provider;();summary;df-generated | +| System.Configuration;SettingsProperty;get_SerializeAs;();summary;df-generated | +| System.Configuration;SettingsProperty;get_ThrowOnErrorDeserializing;();summary;df-generated | +| System.Configuration;SettingsProperty;get_ThrowOnErrorSerializing;();summary;df-generated | +| System.Configuration;SettingsProperty;set_DefaultValue;(System.Object);summary;df-generated | +| System.Configuration;SettingsProperty;set_IsReadOnly;(System.Boolean);summary;df-generated | +| System.Configuration;SettingsProperty;set_Name;(System.String);summary;df-generated | +| System.Configuration;SettingsProperty;set_PropertyType;(System.Type);summary;df-generated | +| System.Configuration;SettingsProperty;set_Provider;(System.Configuration.SettingsProvider);summary;df-generated | +| System.Configuration;SettingsProperty;set_SerializeAs;(System.Configuration.SettingsSerializeAs);summary;df-generated | +| System.Configuration;SettingsProperty;set_ThrowOnErrorDeserializing;(System.Boolean);summary;df-generated | +| System.Configuration;SettingsProperty;set_ThrowOnErrorSerializing;(System.Boolean);summary;df-generated | +| System.Configuration;SettingsPropertyCollection;Add;(System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;SettingsPropertyCollection;OnAdd;(System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;SettingsPropertyCollection;OnAddComplete;(System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;SettingsPropertyCollection;OnClear;();summary;df-generated | +| System.Configuration;SettingsPropertyCollection;OnClearComplete;();summary;df-generated | +| System.Configuration;SettingsPropertyCollection;OnRemove;(System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;SettingsPropertyCollection;OnRemoveComplete;(System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;SettingsPropertyCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;SettingsPropertyCollection;SetReadOnly;();summary;df-generated | +| System.Configuration;SettingsPropertyCollection;get_Count;();summary;df-generated | +| System.Configuration;SettingsPropertyCollection;get_IsSynchronized;();summary;df-generated | +| System.Configuration;SettingsPropertyIsReadOnlyException;SettingsPropertyIsReadOnlyException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Configuration;SettingsPropertyIsReadOnlyException;SettingsPropertyIsReadOnlyException;(System.String);summary;df-generated | +| System.Configuration;SettingsPropertyIsReadOnlyException;SettingsPropertyIsReadOnlyException;(System.String,System.Exception);summary;df-generated | +| System.Configuration;SettingsPropertyNotFoundException;SettingsPropertyNotFoundException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Configuration;SettingsPropertyNotFoundException;SettingsPropertyNotFoundException;(System.String);summary;df-generated | +| System.Configuration;SettingsPropertyNotFoundException;SettingsPropertyNotFoundException;(System.String,System.Exception);summary;df-generated | +| System.Configuration;SettingsPropertyValue;SettingsPropertyValue;(System.Configuration.SettingsProperty);summary;df-generated | +| System.Configuration;SettingsPropertyValue;get_Deserialized;();summary;df-generated | +| System.Configuration;SettingsPropertyValue;get_IsDirty;();summary;df-generated | +| System.Configuration;SettingsPropertyValue;get_Name;();summary;df-generated | +| System.Configuration;SettingsPropertyValue;get_Property;();summary;df-generated | +| System.Configuration;SettingsPropertyValue;get_UsingDefaultValue;();summary;df-generated | +| System.Configuration;SettingsPropertyValue;set_Deserialized;(System.Boolean);summary;df-generated | +| System.Configuration;SettingsPropertyValue;set_IsDirty;(System.Boolean);summary;df-generated | +| System.Configuration;SettingsPropertyValueCollection;Remove;(System.String);summary;df-generated | +| System.Configuration;SettingsPropertyValueCollection;SetReadOnly;();summary;df-generated | +| System.Configuration;SettingsPropertyValueCollection;get_Count;();summary;df-generated | +| System.Configuration;SettingsPropertyValueCollection;get_IsSynchronized;();summary;df-generated | +| System.Configuration;SettingsPropertyWrongTypeException;SettingsPropertyWrongTypeException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Configuration;SettingsPropertyWrongTypeException;SettingsPropertyWrongTypeException;(System.String);summary;df-generated | +| System.Configuration;SettingsPropertyWrongTypeException;SettingsPropertyWrongTypeException;(System.String,System.Exception);summary;df-generated | +| System.Configuration;SettingsProvider;GetPropertyValues;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection);summary;df-generated | +| System.Configuration;SettingsProvider;SetPropertyValues;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyValueCollection);summary;df-generated | +| System.Configuration;SettingsProvider;get_ApplicationName;();summary;df-generated | +| System.Configuration;SettingsProvider;set_ApplicationName;(System.String);summary;df-generated | +| System.Configuration;SettingsProviderCollection;Add;(System.Configuration.Provider.ProviderBase);summary;df-generated | +| System.Configuration;SettingsSerializeAsAttribute;SettingsSerializeAsAttribute;(System.Configuration.SettingsSerializeAs);summary;df-generated | +| System.Configuration;SettingsSerializeAsAttribute;get_SerializeAs;();summary;df-generated | +| System.Configuration;SingleTagSectionHandler;Create;(System.Object,System.Object,System.Xml.XmlNode);summary;df-generated | +| System.Configuration;SpecialSettingAttribute;SpecialSettingAttribute;(System.Configuration.SpecialSetting);summary;df-generated | +| System.Configuration;SpecialSettingAttribute;get_SpecialSetting;();summary;df-generated | +| System.Configuration;StringValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;StringValidator;StringValidator;(System.Int32);summary;df-generated | +| System.Configuration;StringValidator;StringValidator;(System.Int32,System.Int32);summary;df-generated | +| System.Configuration;StringValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;StringValidatorAttribute;get_InvalidCharacters;();summary;df-generated | +| System.Configuration;StringValidatorAttribute;get_MaxLength;();summary;df-generated | +| System.Configuration;StringValidatorAttribute;get_MinLength;();summary;df-generated | +| System.Configuration;StringValidatorAttribute;get_ValidatorInstance;();summary;df-generated | +| System.Configuration;StringValidatorAttribute;set_InvalidCharacters;(System.String);summary;df-generated | +| System.Configuration;StringValidatorAttribute;set_MaxLength;(System.Int32);summary;df-generated | +| System.Configuration;StringValidatorAttribute;set_MinLength;(System.Int32);summary;df-generated | +| System.Configuration;SubclassTypeValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;SubclassTypeValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;SubclassTypeValidatorAttribute;SubclassTypeValidatorAttribute;(System.Type);summary;df-generated | +| System.Configuration;SubclassTypeValidatorAttribute;get_BaseClass;();summary;df-generated | +| System.Configuration;SubclassTypeValidatorAttribute;get_ValidatorInstance;();summary;df-generated | +| System.Configuration;TimeSpanMinutesConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Configuration;TimeSpanMinutesConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Configuration;TimeSpanMinutesOrInfiniteConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Configuration;TimeSpanMinutesOrInfiniteConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Configuration;TimeSpanSecondsConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Configuration;TimeSpanSecondsConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Configuration;TimeSpanSecondsOrInfiniteConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Configuration;TimeSpanSecondsOrInfiniteConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Configuration;TimeSpanValidator;CanValidate;(System.Type);summary;df-generated | +| System.Configuration;TimeSpanValidator;TimeSpanValidator;(System.TimeSpan,System.TimeSpan);summary;df-generated | +| System.Configuration;TimeSpanValidator;TimeSpanValidator;(System.TimeSpan,System.TimeSpan,System.Boolean);summary;df-generated | +| System.Configuration;TimeSpanValidator;Validate;(System.Object);summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;get_ExcludeRange;();summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;get_MaxValue;();summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;get_MaxValueString;();summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;get_MinValue;();summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;get_MinValueString;();summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;get_ValidatorInstance;();summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;set_ExcludeRange;(System.Boolean);summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;set_MaxValueString;(System.String);summary;df-generated | +| System.Configuration;TimeSpanValidatorAttribute;set_MinValueString;(System.String);summary;df-generated | +| System.Configuration;TypeNameConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Configuration;UriSection;get_Properties;();summary;df-generated | +| System.Data.Common;DBDataPermission;Add;(System.String,System.String,System.Data.KeyRestrictionBehavior);summary;df-generated | +| System.Data.Common;DBDataPermission;Clear;();summary;df-generated | +| System.Data.Common;DBDataPermission;Copy;();summary;df-generated | +| System.Data.Common;DBDataPermission;CreateInstance;();summary;df-generated | +| System.Data.Common;DBDataPermission;DBDataPermission;(System.Data.Common.DBDataPermission);summary;df-generated | +| System.Data.Common;DBDataPermission;DBDataPermission;(System.Data.Common.DBDataPermissionAttribute);summary;df-generated | +| System.Data.Common;DBDataPermission;DBDataPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Data.Common;DBDataPermission;DBDataPermission;(System.Security.Permissions.PermissionState,System.Boolean);summary;df-generated | +| System.Data.Common;DBDataPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Data.Common;DBDataPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Data.Common;DBDataPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Data.Common;DBDataPermission;IsUnrestricted;();summary;df-generated | +| System.Data.Common;DBDataPermission;ToXml;();summary;df-generated | +| System.Data.Common;DBDataPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Data.Common;DBDataPermission;get_AllowBlankPassword;();summary;df-generated | +| System.Data.Common;DBDataPermission;set_AllowBlankPassword;(System.Boolean);summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;DBDataPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;ShouldSerializeConnectionString;();summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;ShouldSerializeKeyRestrictions;();summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;get_AllowBlankPassword;();summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;get_ConnectionString;();summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;get_KeyRestrictionBehavior;();summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;get_KeyRestrictions;();summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;set_AllowBlankPassword;(System.Boolean);summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;set_ConnectionString;(System.String);summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;set_KeyRestrictionBehavior;(System.Data.KeyRestrictionBehavior);summary;df-generated | +| System.Data.Common;DBDataPermissionAttribute;set_KeyRestrictions;(System.String);summary;df-generated | | System.Data.Common;DataAdapter;CloneInternals;();summary;df-generated | | System.Data.Common;DataAdapter;CreateTableMappings;();summary;df-generated | | System.Data.Common;DataAdapter;DataAdapter;(System.Data.Common.DataAdapter);summary;df-generated | @@ -22358,6 +24937,50 @@ neutral | System.Data.Common;RowUpdatingEventArgs;get_StatementType;();summary;df-generated | | System.Data.Common;RowUpdatingEventArgs;get_Status;();summary;df-generated | | System.Data.Common;RowUpdatingEventArgs;set_Status;(System.Data.UpdateStatus);summary;df-generated | +| System.Data.Odbc;OdbcPermission;Add;(System.String,System.String,System.Data.KeyRestrictionBehavior);summary;df-generated | +| System.Data.Odbc;OdbcPermission;Copy;();summary;df-generated | +| System.Data.Odbc;OdbcPermission;OdbcPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Data.Odbc;OdbcPermission;OdbcPermission;(System.Security.Permissions.PermissionState,System.Boolean);summary;df-generated | +| System.Data.Odbc;OdbcPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Data.Odbc;OdbcPermissionAttribute;OdbcPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Data.OleDb;OleDbPermission;Copy;();summary;df-generated | +| System.Data.OleDb;OleDbPermission;OleDbPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Data.OleDb;OleDbPermission;OleDbPermission;(System.Security.Permissions.PermissionState,System.Boolean);summary;df-generated | +| System.Data.OleDb;OleDbPermission;get_Provider;();summary;df-generated | +| System.Data.OleDb;OleDbPermission;set_Provider;(System.String);summary;df-generated | +| System.Data.OleDb;OleDbPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Data.OleDb;OleDbPermissionAttribute;OleDbPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Data.OleDb;OleDbPermissionAttribute;get_Provider;();summary;df-generated | +| System.Data.OleDb;OleDbPermissionAttribute;set_Provider;(System.String);summary;df-generated | +| System.Data.OracleClient;OraclePermission;Add;(System.String,System.String,System.Data.KeyRestrictionBehavior);summary;df-generated | +| System.Data.OracleClient;OraclePermission;Copy;();summary;df-generated | +| System.Data.OracleClient;OraclePermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Data.OracleClient;OraclePermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Data.OracleClient;OraclePermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Data.OracleClient;OraclePermission;IsUnrestricted;();summary;df-generated | +| System.Data.OracleClient;OraclePermission;OraclePermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Data.OracleClient;OraclePermission;ToXml;();summary;df-generated | +| System.Data.OracleClient;OraclePermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Data.OracleClient;OraclePermission;get_AllowBlankPassword;();summary;df-generated | +| System.Data.OracleClient;OraclePermission;set_AllowBlankPassword;(System.Boolean);summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;CreatePermission;();summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;OraclePermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;ShouldSerializeConnectionString;();summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;ShouldSerializeKeyRestrictions;();summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;get_AllowBlankPassword;();summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;get_ConnectionString;();summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;get_KeyRestrictionBehavior;();summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;get_KeyRestrictions;();summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;set_AllowBlankPassword;(System.Boolean);summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;set_ConnectionString;(System.String);summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;set_KeyRestrictionBehavior;(System.Data.KeyRestrictionBehavior);summary;df-generated | +| System.Data.OracleClient;OraclePermissionAttribute;set_KeyRestrictions;(System.String);summary;df-generated | +| System.Data.SqlClient;SqlClientPermission;Add;(System.String,System.String,System.Data.KeyRestrictionBehavior);summary;df-generated | +| System.Data.SqlClient;SqlClientPermission;Copy;();summary;df-generated | +| System.Data.SqlClient;SqlClientPermission;SqlClientPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Data.SqlClient;SqlClientPermission;SqlClientPermission;(System.Security.Permissions.PermissionState,System.Boolean);summary;df-generated | +| System.Data.SqlClient;SqlClientPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Data.SqlClient;SqlClientPermissionAttribute;SqlClientPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | | System.Data.SqlTypes;INullable;get_IsNull;();summary;df-generated | | System.Data.SqlTypes;SqlAlreadyFilledException;SqlAlreadyFilledException;(System.String);summary;df-generated | | System.Data.SqlTypes;SqlAlreadyFilledException;SqlAlreadyFilledException;(System.String,System.Exception);summary;df-generated | @@ -24621,6 +27244,33 @@ neutral | System.Diagnostics;EventLogEntryCollection;get_IsSynchronized;();summary;df-generated | | System.Diagnostics;EventLogEntryCollection;get_Item;(System.Int32);summary;df-generated | | System.Diagnostics;EventLogEntryCollection;get_SyncRoot;();summary;df-generated | +| System.Diagnostics;EventLogPermission;EventLogPermission;(System.Diagnostics.EventLogPermissionAccess,System.String);summary;df-generated | +| System.Diagnostics;EventLogPermission;EventLogPermission;(System.Diagnostics.EventLogPermissionEntry[]);summary;df-generated | +| System.Diagnostics;EventLogPermission;EventLogPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Diagnostics;EventLogPermission;get_PermissionEntries;();summary;df-generated | +| System.Diagnostics;EventLogPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Diagnostics;EventLogPermissionAttribute;EventLogPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Diagnostics;EventLogPermissionAttribute;get_MachineName;();summary;df-generated | +| System.Diagnostics;EventLogPermissionAttribute;get_PermissionAccess;();summary;df-generated | +| System.Diagnostics;EventLogPermissionAttribute;set_MachineName;(System.String);summary;df-generated | +| System.Diagnostics;EventLogPermissionAttribute;set_PermissionAccess;(System.Diagnostics.EventLogPermissionAccess);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntry;EventLogPermissionEntry;(System.Diagnostics.EventLogPermissionAccess,System.String);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntry;get_MachineName;();summary;df-generated | +| System.Diagnostics;EventLogPermissionEntry;get_PermissionAccess;();summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;Add;(System.Diagnostics.EventLogPermissionEntry);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;AddRange;(System.Diagnostics.EventLogPermissionEntryCollection);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;AddRange;(System.Diagnostics.EventLogPermissionEntry[]);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;Contains;(System.Diagnostics.EventLogPermissionEntry);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;CopyTo;(System.Diagnostics.EventLogPermissionEntry[],System.Int32);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;IndexOf;(System.Diagnostics.EventLogPermissionEntry);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;Insert;(System.Int32,System.Diagnostics.EventLogPermissionEntry);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;OnClear;();summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;OnInsert;(System.Int32,System.Object);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;OnRemove;(System.Int32,System.Object);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;OnSet;(System.Int32,System.Object,System.Object);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;Remove;(System.Diagnostics.EventLogPermissionEntry);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;get_Item;(System.Int32);summary;df-generated | +| System.Diagnostics;EventLogPermissionEntryCollection;set_Item;(System.Int32,System.Diagnostics.EventLogPermissionEntry);summary;df-generated | | System.Diagnostics;EventLogTraceListener;Close;();summary;df-generated | | System.Diagnostics;EventLogTraceListener;Dispose;(System.Boolean);summary;df-generated | | System.Diagnostics;EventLogTraceListener;EventLogTraceListener;(System.Diagnostics.EventLog);summary;df-generated | @@ -24675,6 +27325,36 @@ neutral | System.Diagnostics;InitializingTraceSourceEventArgs;set_WasInitialized;(System.Boolean);summary;df-generated | | System.Diagnostics;MonitoringDescriptionAttribute;MonitoringDescriptionAttribute;(System.String);summary;df-generated | | System.Diagnostics;MonitoringDescriptionAttribute;get_Description;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermission;PerformanceCounterPermission;(System.Diagnostics.PerformanceCounterPermissionAccess,System.String,System.String);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermission;PerformanceCounterPermission;(System.Diagnostics.PerformanceCounterPermissionEntry[]);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermission;PerformanceCounterPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermission;get_PermissionEntries;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionAttribute;PerformanceCounterPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionAttribute;get_CategoryName;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionAttribute;get_MachineName;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionAttribute;get_PermissionAccess;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionAttribute;set_CategoryName;(System.String);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionAttribute;set_MachineName;(System.String);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionAttribute;set_PermissionAccess;(System.Diagnostics.PerformanceCounterPermissionAccess);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntry;PerformanceCounterPermissionEntry;(System.Diagnostics.PerformanceCounterPermissionAccess,System.String,System.String);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntry;get_CategoryName;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntry;get_MachineName;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntry;get_PermissionAccess;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;Add;(System.Diagnostics.PerformanceCounterPermissionEntry);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;AddRange;(System.Diagnostics.PerformanceCounterPermissionEntryCollection);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;AddRange;(System.Diagnostics.PerformanceCounterPermissionEntry[]);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;Contains;(System.Diagnostics.PerformanceCounterPermissionEntry);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;CopyTo;(System.Diagnostics.PerformanceCounterPermissionEntry[],System.Int32);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;IndexOf;(System.Diagnostics.PerformanceCounterPermissionEntry);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;Insert;(System.Int32,System.Diagnostics.PerformanceCounterPermissionEntry);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;OnClear;();summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;OnInsert;(System.Int32,System.Object);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;OnRemove;(System.Int32,System.Object);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;OnSet;(System.Int32,System.Object,System.Object);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;Remove;(System.Diagnostics.PerformanceCounterPermissionEntry);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;get_Item;(System.Int32);summary;df-generated | +| System.Diagnostics;PerformanceCounterPermissionEntryCollection;set_Item;(System.Int32,System.Diagnostics.PerformanceCounterPermissionEntry);summary;df-generated | | System.Diagnostics;Process;BeginErrorReadLine;();summary;df-generated | | System.Diagnostics;Process;BeginOutputReadLine;();summary;df-generated | | System.Diagnostics;Process;CancelErrorRead;();summary;df-generated | @@ -25015,6 +27695,989 @@ neutral | System.Diagnostics;XmlWriterTraceListener;XmlWriterTraceListener;(System.IO.TextWriter,System.String);summary;df-generated | | System.Diagnostics;XmlWriterTraceListener;XmlWriterTraceListener;(System.String);summary;df-generated | | System.Diagnostics;XmlWriterTraceListener;XmlWriterTraceListener;(System.String,System.String);summary;df-generated | +| System.Drawing.Configuration;SystemDrawingSection;get_Properties;();summary;df-generated | +| System.Drawing.Configuration;SystemDrawingSection;set_BitmapSuffix;(System.String);summary;df-generated | +| System.Drawing.Design;CategoryNameCollection;CategoryNameCollection;(System.Drawing.Design.CategoryNameCollection);summary;df-generated | +| System.Drawing.Design;CategoryNameCollection;CategoryNameCollection;(System.String[]);summary;df-generated | +| System.Drawing.Design;CategoryNameCollection;Contains;(System.String);summary;df-generated | +| System.Drawing.Design;CategoryNameCollection;CopyTo;(System.String[],System.Int32);summary;df-generated | +| System.Drawing.Design;CategoryNameCollection;IndexOf;(System.String);summary;df-generated | +| System.Drawing.Design;CategoryNameCollection;get_Item;(System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;AdjustableArrowCap;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;AdjustableArrowCap;(System.Single,System.Single,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;get_Filled;();summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;get_Height;();summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;get_MiddleInset;();summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;get_Width;();summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;set_Filled;(System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;set_Height;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;set_MiddleInset;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;AdjustableArrowCap;set_Width;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Blend;Blend;(System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;Blend;get_Factors;();summary;df-generated | +| System.Drawing.Drawing2D;Blend;get_Positions;();summary;df-generated | +| System.Drawing.Drawing2D;Blend;set_Factors;(System.Single[]);summary;df-generated | +| System.Drawing.Drawing2D;Blend;set_Positions;(System.Single[]);summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;ColorBlend;(System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;get_Colors;();summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;get_Positions;();summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;set_Colors;(System.Drawing.Color[]);summary;df-generated | +| System.Drawing.Drawing2D;ColorBlend;set_Positions;(System.Single[]);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;CustomLineCap;(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;CustomLineCap;(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;CustomLineCap;(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.LineCap,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;Dispose;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;GetStrokeCaps;(System.Drawing.Drawing2D.LineCap,System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;SetStrokeCaps;(System.Drawing.Drawing2D.LineCap,System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;get_BaseCap;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;get_BaseInset;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;get_StrokeJoin;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;get_WidthScale;();summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;set_BaseCap;(System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;set_BaseInset;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;set_StrokeJoin;(System.Drawing.Drawing2D.LineJoin);summary;df-generated | +| System.Drawing.Drawing2D;CustomLineCap;set_WidthScale;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddArc;(System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddArc;(System.Drawing.RectangleF,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddArc;(System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddArc;(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBezier;(System.Drawing.Point,System.Drawing.Point,System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBezier;(System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBezier;(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBezier;(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBeziers;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddBeziers;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddClosedCurve;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddClosedCurve;(System.Drawing.PointF[],System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddClosedCurve;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddClosedCurve;(System.Drawing.Point[],System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.PointF[],System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.PointF[],System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.Point[],System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddCurve;(System.Drawing.Point[],System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddEllipse;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddEllipse;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddEllipse;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddEllipse;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLine;(System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLine;(System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLine;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLine;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLines;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddLines;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPath;(System.Drawing.Drawing2D.GraphicsPath,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPie;(System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPie;(System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPie;(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPolygon;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddPolygon;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddRectangle;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddRectangle;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddRectangles;(System.Drawing.RectangleF[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddRectangles;(System.Drawing.Rectangle[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddString;(System.String,System.Drawing.FontFamily,System.Int32,System.Single,System.Drawing.Point,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddString;(System.String,System.Drawing.FontFamily,System.Int32,System.Single,System.Drawing.PointF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddString;(System.String,System.Drawing.FontFamily,System.Int32,System.Single,System.Drawing.Rectangle,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;AddString;(System.String,System.Drawing.FontFamily,System.Int32,System.Single,System.Drawing.RectangleF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;ClearMarkers;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;CloseAllFigures;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;CloseFigure;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Dispose;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Flatten;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Flatten;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Flatten;(System.Drawing.Drawing2D.Matrix,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GetBounds;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GetBounds;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GetBounds;(System.Drawing.Drawing2D.Matrix,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GetLastPoint;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.PointF[],System.Byte[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.PointF[],System.Byte[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.Point[],System.Byte[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;GraphicsPath;(System.Drawing.Point[],System.Byte[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Drawing.Point,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Drawing.Point,System.Drawing.Pen,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Drawing.PointF,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Drawing.PointF,System.Drawing.Pen,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Int32,System.Int32,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Int32,System.Int32,System.Drawing.Pen,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Single,System.Single,System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsOutlineVisible;(System.Single,System.Single,System.Drawing.Pen,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Drawing.Point);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Drawing.Point,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Drawing.PointF,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Int32,System.Int32,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;IsVisible;(System.Single,System.Single,System.Drawing.Graphics);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Reset;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Reverse;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;SetMarkers;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;StartFigure;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Warp;(System.Drawing.PointF[],System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Warp;(System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Warp;(System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.WarpMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Warp;(System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.WarpMode,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Widen;(System.Drawing.Pen);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Widen;(System.Drawing.Pen,System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;Widen;(System.Drawing.Pen,System.Drawing.Drawing2D.Matrix,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_FillMode;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_PathData;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_PathPoints;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_PathTypes;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;get_PointCount;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPath;set_FillMode;(System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;CopyData;(System.Drawing.PointF[],System.Byte[],System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;Dispose;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;Enumerate;(System.Drawing.PointF[],System.Byte[]);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;GraphicsPathIterator;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;HasCurve;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextMarker;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextMarker;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextPathType;(System.Byte,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextSubpath;(System.Drawing.Drawing2D.GraphicsPath,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;NextSubpath;(System.Int32,System.Int32,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;Rewind;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;get_Count;();summary;df-generated | +| System.Drawing.Drawing2D;GraphicsPathIterator;get_SubpathCount;();summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;HatchBrush;(System.Drawing.Drawing2D.HatchStyle,System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;HatchBrush;(System.Drawing.Drawing2D.HatchStyle,System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;get_BackgroundColor;();summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;get_ForegroundColor;();summary;df-generated | +| System.Drawing.Drawing2D;HatchBrush;get_HatchStyle;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.Point,System.Drawing.Point,System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.PointF,System.Drawing.PointF,System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.Rectangle,System.Drawing.Color,System.Drawing.Color,System.Drawing.Drawing2D.LinearGradientMode);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.Rectangle,System.Drawing.Color,System.Drawing.Color,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.Rectangle,System.Drawing.Color,System.Drawing.Color,System.Single,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.RectangleF,System.Drawing.Color,System.Drawing.Color,System.Drawing.Drawing2D.LinearGradientMode);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.RectangleF,System.Drawing.Color,System.Drawing.Color,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;LinearGradientBrush;(System.Drawing.RectangleF,System.Drawing.Color,System.Drawing.Color,System.Single,System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;ResetTransform;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;SetBlendTriangularShape;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;SetBlendTriangularShape;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;SetSigmaBellShape;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;SetSigmaBellShape;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_Blend;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_GammaCorrection;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_InterpolationColors;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_LinearColors;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_Rectangle;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_Transform;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;get_WrapMode;();summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_Blend;(System.Drawing.Drawing2D.Blend);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_GammaCorrection;(System.Boolean);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_InterpolationColors;(System.Drawing.Drawing2D.ColorBlend);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_LinearColors;(System.Drawing.Color[]);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;LinearGradientBrush;set_WrapMode;(System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Dispose;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Equals;(System.Object);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;GetHashCode;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Invert;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Matrix;(System.Drawing.Rectangle,System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Matrix;(System.Drawing.RectangleF,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Matrix;(System.Numerics.Matrix3x2);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Matrix;(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Multiply;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Multiply;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Reset;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Rotate;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Rotate;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;RotateAt;(System.Single,System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;RotateAt;(System.Single,System.Drawing.PointF,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Scale;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Scale;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Shear;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Shear;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;TransformPoints;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;TransformPoints;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;TransformVectors;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;TransformVectors;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Translate;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;Translate;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;VectorTransformPoints;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_Elements;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_IsIdentity;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_IsInvertible;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_MatrixElements;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_OffsetX;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;get_OffsetY;();summary;df-generated | +| System.Drawing.Drawing2D;Matrix;set_MatrixElements;(System.Numerics.Matrix3x2);summary;df-generated | +| System.Drawing.Drawing2D;PathData;get_Points;();summary;df-generated | +| System.Drawing.Drawing2D;PathData;get_Types;();summary;df-generated | +| System.Drawing.Drawing2D;PathData;set_Points;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;PathData;set_Types;(System.Byte[]);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;Clone;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.PointF[]);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.PointF[],System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.Point[]);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;PathGradientBrush;(System.Drawing.Point[],System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;ResetTransform;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;SetBlendTriangularShape;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;SetBlendTriangularShape;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;SetSigmaBellShape;(System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;SetSigmaBellShape;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_Blend;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_CenterColor;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_CenterPoint;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_FocusScales;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_InterpolationColors;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_Rectangle;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_SurroundColors;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_Transform;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;get_WrapMode;();summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_Blend;(System.Drawing.Drawing2D.Blend);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_CenterColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_CenterPoint;(System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_FocusScales;(System.Drawing.PointF);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_InterpolationColors;(System.Drawing.Drawing2D.ColorBlend);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_SurroundColors;(System.Drawing.Color[]);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing.Drawing2D;PathGradientBrush;set_WrapMode;(System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Drawing2D;RegionData;get_Data;();summary;df-generated | +| System.Drawing.Drawing2D;RegionData;set_Data;(System.Byte[]);summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Height;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_PixelFormat;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Reserved;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Scan0;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Stride;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;get_Width;();summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Height;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_PixelFormat;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Reserved;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Scan0;(System.IntPtr);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Stride;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;BitmapData;set_Width;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;ColorMap;get_NewColor;();summary;df-generated | +| System.Drawing.Imaging;ColorMap;get_OldColor;();summary;df-generated | +| System.Drawing.Imaging;ColorMap;set_NewColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing.Imaging;ColorMap;set_OldColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;ColorMatrix;(System.Single[][]);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Item;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix00;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix01;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix02;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix03;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix04;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix10;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix11;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix12;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix13;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix14;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix20;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix21;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix22;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix23;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix24;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix30;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix31;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix32;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix33;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix34;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix40;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix41;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix42;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix43;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;get_Matrix44;();summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Item;(System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix00;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix01;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix02;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix03;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix04;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix10;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix11;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix12;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix13;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix14;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix20;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix21;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix22;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix23;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix24;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix30;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix31;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix32;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix33;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix34;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix40;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix41;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix42;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix43;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorMatrix;set_Matrix44;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ColorPalette;get_Entries;();summary;df-generated | +| System.Drawing.Imaging;ColorPalette;get_Flags;();summary;df-generated | +| System.Drawing.Imaging;Encoder;Encoder;(System.Guid);summary;df-generated | +| System.Drawing.Imaging;Encoder;get_Guid;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;Dispose;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte,System.Boolean);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte[]);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte[],System.Boolean);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int16);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int16[]);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Drawing.Imaging.EncoderParameterValueType,System.IntPtr);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32[],System.Int32[]);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32[],System.Int32[],System.Int32[],System.Int32[]);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64,System.Int64);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64[]);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64[],System.Int64[]);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;EncoderParameter;(System.Drawing.Imaging.Encoder,System.String);summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;get_Encoder;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;get_NumberOfValues;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;get_Type;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;get_ValueType;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameter;set_Encoder;(System.Drawing.Imaging.Encoder);summary;df-generated | +| System.Drawing.Imaging;EncoderParameters;Dispose;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameters;EncoderParameters;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;EncoderParameters;get_Param;();summary;df-generated | +| System.Drawing.Imaging;EncoderParameters;set_Param;(System.Drawing.Imaging.EncoderParameter[]);summary;df-generated | +| System.Drawing.Imaging;FrameDimension;Equals;(System.Object);summary;df-generated | +| System.Drawing.Imaging;FrameDimension;FrameDimension;(System.Guid);summary;df-generated | +| System.Drawing.Imaging;FrameDimension;GetHashCode;();summary;df-generated | +| System.Drawing.Imaging;FrameDimension;ToString;();summary;df-generated | +| System.Drawing.Imaging;FrameDimension;get_Guid;();summary;df-generated | +| System.Drawing.Imaging;FrameDimension;get_Page;();summary;df-generated | +| System.Drawing.Imaging;FrameDimension;get_Resolution;();summary;df-generated | +| System.Drawing.Imaging;FrameDimension;get_Time;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearBrushRemapTable;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearColorKey;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearColorKey;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearColorMatrix;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearColorMatrix;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearGamma;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearGamma;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearNoOp;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearNoOp;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearOutputChannel;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearOutputChannel;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearOutputChannelColorProfile;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearOutputChannelColorProfile;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearRemapTable;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearRemapTable;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearThreshold;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;ClearThreshold;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;Clone;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;Dispose;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;GetAdjustedPalette;(System.Drawing.Imaging.ColorPalette,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetBrushRemapTable;(System.Drawing.Imaging.ColorMap[]);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorKey;(System.Drawing.Color,System.Drawing.Color);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorKey;(System.Drawing.Color,System.Drawing.Color,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrices;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrix);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrices;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrixFlag);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrices;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrixFlag,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrix;(System.Drawing.Imaging.ColorMatrix);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrix;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrixFlag);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetColorMatrix;(System.Drawing.Imaging.ColorMatrix,System.Drawing.Imaging.ColorMatrixFlag,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetGamma;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetGamma;(System.Single,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetNoOp;();summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetNoOp;(System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetOutputChannel;(System.Drawing.Imaging.ColorChannelFlag);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetOutputChannel;(System.Drawing.Imaging.ColorChannelFlag,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetOutputChannelColorProfile;(System.String);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetOutputChannelColorProfile;(System.String,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetRemapTable;(System.Drawing.Imaging.ColorMap[]);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetRemapTable;(System.Drawing.Imaging.ColorMap[],System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetThreshold;(System.Single);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetThreshold;(System.Single,System.Drawing.Imaging.ColorAdjustType);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetWrapMode;(System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetWrapMode;(System.Drawing.Drawing2D.WrapMode,System.Drawing.Color);summary;df-generated | +| System.Drawing.Imaging;ImageAttributes;SetWrapMode;(System.Drawing.Drawing2D.WrapMode,System.Drawing.Color,System.Boolean);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;GetImageDecoders;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;GetImageEncoders;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_Clsid;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_CodecName;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_DllName;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_FilenameExtension;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_Flags;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_FormatDescription;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_FormatID;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_MimeType;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_SignatureMasks;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_SignaturePatterns;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;get_Version;();summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_Clsid;(System.Guid);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_CodecName;(System.String);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_DllName;(System.String);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_FilenameExtension;(System.String);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_Flags;(System.Drawing.Imaging.ImageCodecFlags);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_FormatDescription;(System.String);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_FormatID;(System.Guid);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_MimeType;(System.String);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_SignatureMasks;(System.Byte[][]);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_SignaturePatterns;(System.Byte[][]);summary;df-generated | +| System.Drawing.Imaging;ImageCodecInfo;set_Version;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;ImageFormat;Equals;(System.Object);summary;df-generated | +| System.Drawing.Imaging;ImageFormat;GetHashCode;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;ImageFormat;(System.Guid);summary;df-generated | +| System.Drawing.Imaging;ImageFormat;ToString;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Bmp;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Emf;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Exif;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Gif;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Guid;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Icon;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Jpeg;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_MemoryBmp;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Png;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Tiff;();summary;df-generated | +| System.Drawing.Imaging;ImageFormat;get_Wmf;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_HeaderSize;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_MaxRecord;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_NoObjects;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_NoParameters;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_Size;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_Type;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;get_Version;();summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_HeaderSize;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_MaxRecord;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_NoObjects;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_NoParameters;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_Size;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_Type;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;MetaHeader;set_Version;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;Metafile;GetHenhmetafile;();summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;();summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;(System.IO.Stream);summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;(System.IntPtr);summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;(System.IntPtr,System.Drawing.Imaging.WmfPlaceableFileHeader);summary;df-generated | +| System.Drawing.Imaging;Metafile;GetMetafileHeader;(System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IO.Stream,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Boolean);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Imaging.WmfPlaceableFileHeader);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Imaging.WmfPlaceableFileHeader,System.Boolean);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.Rectangle,System.Drawing.Imaging.MetafileFrameUnit,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.Drawing.Imaging.EmfType,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;Metafile;(System.String,System.IntPtr,System.Drawing.RectangleF,System.Drawing.Imaging.MetafileFrameUnit,System.String);summary;df-generated | +| System.Drawing.Imaging;Metafile;PlayRecord;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.Byte[]);summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsDisplay;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmf;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmfOrEmfPlus;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmfPlus;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmfPlusDual;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsEmfPlusOnly;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsWmf;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;IsWmfPlaceable;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_Bounds;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_DpiX;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_DpiY;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_EmfPlusHeaderSize;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_LogicalDpiX;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_LogicalDpiY;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_MetafileSize;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_Type;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_Version;();summary;df-generated | +| System.Drawing.Imaging;MetafileHeader;get_WmfHeader;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;get_Id;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;get_Len;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;get_Type;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;get_Value;();summary;df-generated | +| System.Drawing.Imaging;PropertyItem;set_Id;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;PropertyItem;set_Len;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;PropertyItem;set_Type;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;PropertyItem;set_Value;(System.Byte[]);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_BboxBottom;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_BboxLeft;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_BboxRight;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_BboxTop;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Checksum;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Hmf;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Inch;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Key;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;get_Reserved;();summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_BboxBottom;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_BboxLeft;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_BboxRight;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_BboxTop;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Checksum;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Hmf;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Inch;(System.Int16);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Key;(System.Int32);summary;df-generated | +| System.Drawing.Imaging;WmfPlaceableFileHeader;set_Reserved;(System.Int32);summary;df-generated | +| System.Drawing.Printing;InvalidPrinterException;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Drawing.Printing;InvalidPrinterException;InvalidPrinterException;(System.Drawing.Printing.PrinterSettings);summary;df-generated | +| System.Drawing.Printing;InvalidPrinterException;InvalidPrinterException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Drawing.Printing;Margins;Clone;();summary;df-generated | +| System.Drawing.Printing;Margins;Equals;(System.Object);summary;df-generated | +| System.Drawing.Printing;Margins;GetHashCode;();summary;df-generated | +| System.Drawing.Printing;Margins;Margins;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Printing;Margins;ToString;();summary;df-generated | +| System.Drawing.Printing;Margins;get_Bottom;();summary;df-generated | +| System.Drawing.Printing;Margins;get_Left;();summary;df-generated | +| System.Drawing.Printing;Margins;get_Right;();summary;df-generated | +| System.Drawing.Printing;Margins;get_Top;();summary;df-generated | +| System.Drawing.Printing;Margins;op_Equality;(System.Drawing.Printing.Margins,System.Drawing.Printing.Margins);summary;df-generated | +| System.Drawing.Printing;Margins;op_Inequality;(System.Drawing.Printing.Margins,System.Drawing.Printing.Margins);summary;df-generated | +| System.Drawing.Printing;Margins;set_Bottom;(System.Int32);summary;df-generated | +| System.Drawing.Printing;Margins;set_Left;(System.Int32);summary;df-generated | +| System.Drawing.Printing;Margins;set_Right;(System.Int32);summary;df-generated | +| System.Drawing.Printing;Margins;set_Top;(System.Int32);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;CreateInstance;(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary);summary;df-generated | +| System.Drawing.Printing;MarginsConverter;GetCreateInstanceSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing.Printing;PageSettings;Clone;();summary;df-generated | +| System.Drawing.Printing;PageSettings;CopyToHdevmode;(System.IntPtr);summary;df-generated | +| System.Drawing.Printing;PageSettings;PageSettings;(System.Drawing.Printing.PrinterSettings);summary;df-generated | +| System.Drawing.Printing;PageSettings;SetHdevmode;(System.IntPtr);summary;df-generated | +| System.Drawing.Printing;PageSettings;ToString;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_Bounds;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_Color;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_HardMarginX;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_HardMarginY;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_Landscape;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_Margins;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_PaperSize;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_PaperSource;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_PrintableArea;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_PrinterResolution;();summary;df-generated | +| System.Drawing.Printing;PageSettings;get_PrinterSettings;();summary;df-generated | +| System.Drawing.Printing;PageSettings;set_Color;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PageSettings;set_Landscape;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PageSettings;set_Margins;(System.Drawing.Printing.Margins);summary;df-generated | +| System.Drawing.Printing;PageSettings;set_PaperSize;(System.Drawing.Printing.PaperSize);summary;df-generated | +| System.Drawing.Printing;PageSettings;set_PaperSource;(System.Drawing.Printing.PaperSource);summary;df-generated | +| System.Drawing.Printing;PageSettings;set_PrinterResolution;(System.Drawing.Printing.PrinterResolution);summary;df-generated | +| System.Drawing.Printing;PageSettings;set_PrinterSettings;(System.Drawing.Printing.PrinterSettings);summary;df-generated | +| System.Drawing.Printing;PaperSize;PaperSize;(System.String,System.Int32,System.Int32);summary;df-generated | +| System.Drawing.Printing;PaperSize;ToString;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_Height;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_Kind;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_PaperName;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_RawKind;();summary;df-generated | +| System.Drawing.Printing;PaperSize;get_Width;();summary;df-generated | +| System.Drawing.Printing;PaperSize;set_Height;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PaperSize;set_PaperName;(System.String);summary;df-generated | +| System.Drawing.Printing;PaperSize;set_RawKind;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PaperSize;set_Width;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PaperSource;ToString;();summary;df-generated | +| System.Drawing.Printing;PaperSource;get_Kind;();summary;df-generated | +| System.Drawing.Printing;PaperSource;get_RawKind;();summary;df-generated | +| System.Drawing.Printing;PaperSource;get_SourceName;();summary;df-generated | +| System.Drawing.Printing;PaperSource;set_RawKind;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PaperSource;set_SourceName;(System.String);summary;df-generated | +| System.Drawing.Printing;PreviewPageInfo;PreviewPageInfo;(System.Drawing.Image,System.Drawing.Size);summary;df-generated | +| System.Drawing.Printing;PreviewPageInfo;get_Image;();summary;df-generated | +| System.Drawing.Printing;PreviewPageInfo;get_PhysicalSize;();summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;GetPreviewPageInfo;();summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;OnEndPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;OnEndPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;OnStartPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;OnStartPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;get_IsPreview;();summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;get_UseAntiAlias;();summary;df-generated | +| System.Drawing.Printing;PreviewPrintController;set_UseAntiAlias;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrintController;OnEndPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintController;OnEndPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintController;OnStartPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintController;OnStartPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintController;get_IsPreview;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;OnBeginPrint;(System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintDocument;OnEndPrint;(System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintDocument;OnPrintPage;(System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintDocument;OnQueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventArgs);summary;df-generated | +| System.Drawing.Printing;PrintDocument;Print;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;ToString;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;get_DefaultPageSettings;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;get_DocumentName;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;get_OriginAtMargins;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;get_PrintController;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;get_PrinterSettings;();summary;df-generated | +| System.Drawing.Printing;PrintDocument;set_DefaultPageSettings;(System.Drawing.Printing.PageSettings);summary;df-generated | +| System.Drawing.Printing;PrintDocument;set_DocumentName;(System.String);summary;df-generated | +| System.Drawing.Printing;PrintDocument;set_OriginAtMargins;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrintDocument;set_PrintController;(System.Drawing.Printing.PrintController);summary;df-generated | +| System.Drawing.Printing;PrintDocument;set_PrinterSettings;(System.Drawing.Printing.PrinterSettings);summary;df-generated | +| System.Drawing.Printing;PrintEventArgs;get_PrintAction;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;get_Cancel;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;get_Graphics;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;get_HasMorePages;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;get_MarginBounds;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;get_PageBounds;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;get_PageSettings;();summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;set_Cancel;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrintPageEventArgs;set_HasMorePages;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterResolution;ToString;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;get_Kind;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;get_X;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;get_Y;();summary;df-generated | +| System.Drawing.Printing;PrinterResolution;set_Kind;(System.Drawing.Printing.PrinterResolutionKind);summary;df-generated | +| System.Drawing.Printing;PrinterResolution;set_X;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterResolution;set_Y;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;Add;(System.Drawing.Printing.PaperSize);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;CopyTo;(System.Drawing.Printing.PaperSize[],System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;GetEnumerator;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;PaperSizeCollection;(System.Drawing.Printing.PaperSize[]);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;get_Count;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;get_IsSynchronized;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;get_Item;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSizeCollection;get_SyncRoot;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;Add;(System.Drawing.Printing.PaperSource);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;CopyTo;(System.Drawing.Printing.PaperSource[],System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;GetEnumerator;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;PaperSourceCollection;(System.Drawing.Printing.PaperSource[]);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;get_Count;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;get_IsSynchronized;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;get_Item;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PaperSourceCollection;get_SyncRoot;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;Add;(System.Drawing.Printing.PrinterResolution);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;CopyTo;(System.Drawing.Printing.PrinterResolution[],System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;GetEnumerator;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;PrinterResolutionCollection;(System.Drawing.Printing.PrinterResolution[]);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;get_Count;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;get_IsSynchronized;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;get_Item;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;get_SyncRoot;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;Add;(System.String);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;CopyTo;(System.String[],System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;GetEnumerator;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;StringCollection;(System.String[]);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;get_Count;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;get_IsSynchronized;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;get_Item;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings+StringCollection;get_SyncRoot;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;Clone;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;CreateMeasurementGraphics;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;CreateMeasurementGraphics;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;CreateMeasurementGraphics;(System.Drawing.Printing.PageSettings);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;CreateMeasurementGraphics;(System.Drawing.Printing.PageSettings,System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;GetHdevmode;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;GetHdevmode;(System.Drawing.Printing.PageSettings);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;GetHdevnames;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;IsDirectPrintingSupported;(System.Drawing.Image);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;IsDirectPrintingSupported;(System.Drawing.Imaging.ImageFormat);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;SetHdevmode;(System.IntPtr);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;SetHdevnames;(System.IntPtr);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;ToString;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_CanDuplex;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_Collate;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_Copies;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_DefaultPageSettings;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_Duplex;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_FromPage;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_InstalledPrinters;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_IsDefaultPrinter;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_IsPlotter;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_IsValid;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_LandscapeAngle;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_MaximumCopies;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_MaximumPage;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_MinimumPage;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PaperSizes;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PaperSources;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PrintFileName;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PrintRange;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PrintToFile;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PrinterName;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_PrinterResolutions;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_SupportsColor;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;get_ToPage;();summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_Collate;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_Copies;(System.Int16);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_Duplex;(System.Drawing.Printing.Duplex);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_FromPage;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_MaximumPage;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_MinimumPage;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_PrintFileName;(System.String);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_PrintRange;(System.Drawing.Printing.PrintRange);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_PrintToFile;(System.Boolean);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_PrinterName;(System.String);summary;df-generated | +| System.Drawing.Printing;PrinterSettings;set_ToPage;(System.Int32);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Double,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Drawing.Point,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Drawing.Printing.Margins,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Drawing.Rectangle,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Drawing.Size,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrinterUnitConvert;Convert;(System.Int32,System.Drawing.Printing.PrinterUnit,System.Drawing.Printing.PrinterUnit);summary;df-generated | +| System.Drawing.Printing;PrintingPermission;Copy;();summary;df-generated | +| System.Drawing.Printing;PrintingPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Drawing.Printing;PrintingPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Drawing.Printing;PrintingPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Drawing.Printing;PrintingPermission;IsUnrestricted;();summary;df-generated | +| System.Drawing.Printing;PrintingPermission;PrintingPermission;(System.Drawing.Printing.PrintingPermissionLevel);summary;df-generated | +| System.Drawing.Printing;PrintingPermission;PrintingPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Drawing.Printing;PrintingPermission;ToXml;();summary;df-generated | +| System.Drawing.Printing;PrintingPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Drawing.Printing;PrintingPermission;get_Level;();summary;df-generated | +| System.Drawing.Printing;PrintingPermission;set_Level;(System.Drawing.Printing.PrintingPermissionLevel);summary;df-generated | +| System.Drawing.Printing;PrintingPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Drawing.Printing;PrintingPermissionAttribute;PrintingPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Drawing.Printing;PrintingPermissionAttribute;get_Level;();summary;df-generated | +| System.Drawing.Printing;PrintingPermissionAttribute;set_Level;(System.Drawing.Printing.PrintingPermissionLevel);summary;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;QueryPageSettingsEventArgs;(System.Drawing.Printing.PageSettings);summary;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;get_PageSettings;();summary;df-generated | +| System.Drawing.Printing;QueryPageSettingsEventArgs;set_PageSettings;(System.Drawing.Printing.PageSettings);summary;df-generated | +| System.Drawing.Printing;StandardPrintController;OnEndPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;StandardPrintController;OnEndPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Printing;StandardPrintController;OnStartPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);summary;df-generated | +| System.Drawing.Printing;StandardPrintController;OnStartPrint;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintEventArgs);summary;df-generated | +| System.Drawing.Text;FontCollection;Dispose;();summary;df-generated | +| System.Drawing.Text;FontCollection;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing.Text;FontCollection;get_Families;();summary;df-generated | +| System.Drawing.Text;PrivateFontCollection;AddFontFile;(System.String);summary;df-generated | +| System.Drawing.Text;PrivateFontCollection;AddMemoryFont;(System.IntPtr,System.Int32);summary;df-generated | +| System.Drawing.Text;PrivateFontCollection;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Drawing.Image);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Drawing.Image,System.Drawing.Size);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Drawing.Image,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.IO.Stream);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.IO.Stream,System.Boolean);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Int32,System.Int32,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Int32,System.Int32,System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Int32,System.Int32,System.Int32,System.Drawing.Imaging.PixelFormat,System.IntPtr);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.String);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.String,System.Boolean);summary;df-generated | +| System.Drawing;Bitmap;Bitmap;(System.Type,System.String);summary;df-generated | +| System.Drawing;Bitmap;Clone;(System.Drawing.Rectangle,System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Bitmap;Clone;(System.Drawing.RectangleF,System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Bitmap;FromHicon;(System.IntPtr);summary;df-generated | +| System.Drawing;Bitmap;FromResource;(System.IntPtr,System.String);summary;df-generated | +| System.Drawing;Bitmap;GetHbitmap;();summary;df-generated | +| System.Drawing;Bitmap;GetHbitmap;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Bitmap;GetHicon;();summary;df-generated | +| System.Drawing;Bitmap;GetPixel;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Bitmap;LockBits;(System.Drawing.Rectangle,System.Drawing.Imaging.ImageLockMode,System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Bitmap;LockBits;(System.Drawing.Rectangle,System.Drawing.Imaging.ImageLockMode,System.Drawing.Imaging.PixelFormat,System.Drawing.Imaging.BitmapData);summary;df-generated | +| System.Drawing;Bitmap;MakeTransparent;();summary;df-generated | +| System.Drawing;Bitmap;MakeTransparent;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Bitmap;SetPixel;(System.Int32,System.Int32,System.Drawing.Color);summary;df-generated | +| System.Drawing;Bitmap;SetResolution;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Bitmap;UnlockBits;(System.Drawing.Imaging.BitmapData);summary;df-generated | +| System.Drawing;Brush;Clone;();summary;df-generated | +| System.Drawing;Brush;Dispose;();summary;df-generated | +| System.Drawing;Brush;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing;Brush;SetNativeBrush;(System.IntPtr);summary;df-generated | +| System.Drawing;Brushes;get_AliceBlue;();summary;df-generated | +| System.Drawing;Brushes;get_AntiqueWhite;();summary;df-generated | +| System.Drawing;Brushes;get_Aqua;();summary;df-generated | +| System.Drawing;Brushes;get_Aquamarine;();summary;df-generated | +| System.Drawing;Brushes;get_Azure;();summary;df-generated | +| System.Drawing;Brushes;get_Beige;();summary;df-generated | +| System.Drawing;Brushes;get_Bisque;();summary;df-generated | +| System.Drawing;Brushes;get_Black;();summary;df-generated | +| System.Drawing;Brushes;get_BlanchedAlmond;();summary;df-generated | +| System.Drawing;Brushes;get_Blue;();summary;df-generated | +| System.Drawing;Brushes;get_BlueViolet;();summary;df-generated | +| System.Drawing;Brushes;get_Brown;();summary;df-generated | +| System.Drawing;Brushes;get_BurlyWood;();summary;df-generated | +| System.Drawing;Brushes;get_CadetBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Chartreuse;();summary;df-generated | +| System.Drawing;Brushes;get_Chocolate;();summary;df-generated | +| System.Drawing;Brushes;get_Coral;();summary;df-generated | +| System.Drawing;Brushes;get_CornflowerBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Cornsilk;();summary;df-generated | +| System.Drawing;Brushes;get_Crimson;();summary;df-generated | +| System.Drawing;Brushes;get_Cyan;();summary;df-generated | +| System.Drawing;Brushes;get_DarkBlue;();summary;df-generated | +| System.Drawing;Brushes;get_DarkCyan;();summary;df-generated | +| System.Drawing;Brushes;get_DarkGoldenrod;();summary;df-generated | +| System.Drawing;Brushes;get_DarkGray;();summary;df-generated | +| System.Drawing;Brushes;get_DarkGreen;();summary;df-generated | +| System.Drawing;Brushes;get_DarkKhaki;();summary;df-generated | +| System.Drawing;Brushes;get_DarkMagenta;();summary;df-generated | +| System.Drawing;Brushes;get_DarkOliveGreen;();summary;df-generated | +| System.Drawing;Brushes;get_DarkOrange;();summary;df-generated | +| System.Drawing;Brushes;get_DarkOrchid;();summary;df-generated | +| System.Drawing;Brushes;get_DarkRed;();summary;df-generated | +| System.Drawing;Brushes;get_DarkSalmon;();summary;df-generated | +| System.Drawing;Brushes;get_DarkSeaGreen;();summary;df-generated | +| System.Drawing;Brushes;get_DarkSlateBlue;();summary;df-generated | +| System.Drawing;Brushes;get_DarkSlateGray;();summary;df-generated | +| System.Drawing;Brushes;get_DarkTurquoise;();summary;df-generated | +| System.Drawing;Brushes;get_DarkViolet;();summary;df-generated | +| System.Drawing;Brushes;get_DeepPink;();summary;df-generated | +| System.Drawing;Brushes;get_DeepSkyBlue;();summary;df-generated | +| System.Drawing;Brushes;get_DimGray;();summary;df-generated | +| System.Drawing;Brushes;get_DodgerBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Firebrick;();summary;df-generated | +| System.Drawing;Brushes;get_FloralWhite;();summary;df-generated | +| System.Drawing;Brushes;get_ForestGreen;();summary;df-generated | +| System.Drawing;Brushes;get_Fuchsia;();summary;df-generated | +| System.Drawing;Brushes;get_Gainsboro;();summary;df-generated | +| System.Drawing;Brushes;get_GhostWhite;();summary;df-generated | +| System.Drawing;Brushes;get_Gold;();summary;df-generated | +| System.Drawing;Brushes;get_Goldenrod;();summary;df-generated | +| System.Drawing;Brushes;get_Gray;();summary;df-generated | +| System.Drawing;Brushes;get_Green;();summary;df-generated | +| System.Drawing;Brushes;get_GreenYellow;();summary;df-generated | +| System.Drawing;Brushes;get_Honeydew;();summary;df-generated | +| System.Drawing;Brushes;get_HotPink;();summary;df-generated | +| System.Drawing;Brushes;get_IndianRed;();summary;df-generated | +| System.Drawing;Brushes;get_Indigo;();summary;df-generated | +| System.Drawing;Brushes;get_Ivory;();summary;df-generated | +| System.Drawing;Brushes;get_Khaki;();summary;df-generated | +| System.Drawing;Brushes;get_Lavender;();summary;df-generated | +| System.Drawing;Brushes;get_LavenderBlush;();summary;df-generated | +| System.Drawing;Brushes;get_LawnGreen;();summary;df-generated | +| System.Drawing;Brushes;get_LemonChiffon;();summary;df-generated | +| System.Drawing;Brushes;get_LightBlue;();summary;df-generated | +| System.Drawing;Brushes;get_LightCoral;();summary;df-generated | +| System.Drawing;Brushes;get_LightCyan;();summary;df-generated | +| System.Drawing;Brushes;get_LightGoldenrodYellow;();summary;df-generated | +| System.Drawing;Brushes;get_LightGray;();summary;df-generated | +| System.Drawing;Brushes;get_LightGreen;();summary;df-generated | +| System.Drawing;Brushes;get_LightPink;();summary;df-generated | +| System.Drawing;Brushes;get_LightSalmon;();summary;df-generated | +| System.Drawing;Brushes;get_LightSeaGreen;();summary;df-generated | +| System.Drawing;Brushes;get_LightSkyBlue;();summary;df-generated | +| System.Drawing;Brushes;get_LightSlateGray;();summary;df-generated | +| System.Drawing;Brushes;get_LightSteelBlue;();summary;df-generated | +| System.Drawing;Brushes;get_LightYellow;();summary;df-generated | +| System.Drawing;Brushes;get_Lime;();summary;df-generated | +| System.Drawing;Brushes;get_LimeGreen;();summary;df-generated | +| System.Drawing;Brushes;get_Linen;();summary;df-generated | +| System.Drawing;Brushes;get_Magenta;();summary;df-generated | +| System.Drawing;Brushes;get_Maroon;();summary;df-generated | +| System.Drawing;Brushes;get_MediumAquamarine;();summary;df-generated | +| System.Drawing;Brushes;get_MediumBlue;();summary;df-generated | +| System.Drawing;Brushes;get_MediumOrchid;();summary;df-generated | +| System.Drawing;Brushes;get_MediumPurple;();summary;df-generated | +| System.Drawing;Brushes;get_MediumSeaGreen;();summary;df-generated | +| System.Drawing;Brushes;get_MediumSlateBlue;();summary;df-generated | +| System.Drawing;Brushes;get_MediumSpringGreen;();summary;df-generated | +| System.Drawing;Brushes;get_MediumTurquoise;();summary;df-generated | +| System.Drawing;Brushes;get_MediumVioletRed;();summary;df-generated | +| System.Drawing;Brushes;get_MidnightBlue;();summary;df-generated | +| System.Drawing;Brushes;get_MintCream;();summary;df-generated | +| System.Drawing;Brushes;get_MistyRose;();summary;df-generated | +| System.Drawing;Brushes;get_Moccasin;();summary;df-generated | +| System.Drawing;Brushes;get_NavajoWhite;();summary;df-generated | +| System.Drawing;Brushes;get_Navy;();summary;df-generated | +| System.Drawing;Brushes;get_OldLace;();summary;df-generated | +| System.Drawing;Brushes;get_Olive;();summary;df-generated | +| System.Drawing;Brushes;get_OliveDrab;();summary;df-generated | +| System.Drawing;Brushes;get_Orange;();summary;df-generated | +| System.Drawing;Brushes;get_OrangeRed;();summary;df-generated | +| System.Drawing;Brushes;get_Orchid;();summary;df-generated | +| System.Drawing;Brushes;get_PaleGoldenrod;();summary;df-generated | +| System.Drawing;Brushes;get_PaleGreen;();summary;df-generated | +| System.Drawing;Brushes;get_PaleTurquoise;();summary;df-generated | +| System.Drawing;Brushes;get_PaleVioletRed;();summary;df-generated | +| System.Drawing;Brushes;get_PapayaWhip;();summary;df-generated | +| System.Drawing;Brushes;get_PeachPuff;();summary;df-generated | +| System.Drawing;Brushes;get_Peru;();summary;df-generated | +| System.Drawing;Brushes;get_Pink;();summary;df-generated | +| System.Drawing;Brushes;get_Plum;();summary;df-generated | +| System.Drawing;Brushes;get_PowderBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Purple;();summary;df-generated | +| System.Drawing;Brushes;get_Red;();summary;df-generated | +| System.Drawing;Brushes;get_RosyBrown;();summary;df-generated | +| System.Drawing;Brushes;get_RoyalBlue;();summary;df-generated | +| System.Drawing;Brushes;get_SaddleBrown;();summary;df-generated | +| System.Drawing;Brushes;get_Salmon;();summary;df-generated | +| System.Drawing;Brushes;get_SandyBrown;();summary;df-generated | +| System.Drawing;Brushes;get_SeaGreen;();summary;df-generated | +| System.Drawing;Brushes;get_SeaShell;();summary;df-generated | +| System.Drawing;Brushes;get_Sienna;();summary;df-generated | +| System.Drawing;Brushes;get_Silver;();summary;df-generated | +| System.Drawing;Brushes;get_SkyBlue;();summary;df-generated | +| System.Drawing;Brushes;get_SlateBlue;();summary;df-generated | +| System.Drawing;Brushes;get_SlateGray;();summary;df-generated | +| System.Drawing;Brushes;get_Snow;();summary;df-generated | +| System.Drawing;Brushes;get_SpringGreen;();summary;df-generated | +| System.Drawing;Brushes;get_SteelBlue;();summary;df-generated | +| System.Drawing;Brushes;get_Tan;();summary;df-generated | +| System.Drawing;Brushes;get_Teal;();summary;df-generated | +| System.Drawing;Brushes;get_Thistle;();summary;df-generated | +| System.Drawing;Brushes;get_Tomato;();summary;df-generated | +| System.Drawing;Brushes;get_Transparent;();summary;df-generated | +| System.Drawing;Brushes;get_Turquoise;();summary;df-generated | +| System.Drawing;Brushes;get_Violet;();summary;df-generated | +| System.Drawing;Brushes;get_Wheat;();summary;df-generated | +| System.Drawing;Brushes;get_White;();summary;df-generated | +| System.Drawing;Brushes;get_WhiteSmoke;();summary;df-generated | +| System.Drawing;Brushes;get_Yellow;();summary;df-generated | +| System.Drawing;Brushes;get_YellowGreen;();summary;df-generated | +| System.Drawing;BufferedGraphics;Dispose;();summary;df-generated | +| System.Drawing;BufferedGraphics;Render;();summary;df-generated | +| System.Drawing;BufferedGraphics;Render;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;BufferedGraphics;Render;(System.IntPtr);summary;df-generated | +| System.Drawing;BufferedGraphics;get_Graphics;();summary;df-generated | +| System.Drawing;BufferedGraphicsContext;Allocate;(System.Drawing.Graphics,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;BufferedGraphicsContext;Allocate;(System.IntPtr,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;BufferedGraphicsContext;Dispose;();summary;df-generated | +| System.Drawing;BufferedGraphicsContext;Invalidate;();summary;df-generated | +| System.Drawing;BufferedGraphicsContext;get_MaximumBuffer;();summary;df-generated | +| System.Drawing;BufferedGraphicsContext;set_MaximumBuffer;(System.Drawing.Size);summary;df-generated | +| System.Drawing;BufferedGraphicsManager;get_Current;();summary;df-generated | +| System.Drawing;CharacterRange;CharacterRange;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;CharacterRange;Equals;(System.Object);summary;df-generated | +| System.Drawing;CharacterRange;GetHashCode;();summary;df-generated | +| System.Drawing;CharacterRange;get_First;();summary;df-generated | +| System.Drawing;CharacterRange;get_Length;();summary;df-generated | +| System.Drawing;CharacterRange;op_Equality;(System.Drawing.CharacterRange,System.Drawing.CharacterRange);summary;df-generated | +| System.Drawing;CharacterRange;op_Inequality;(System.Drawing.CharacterRange,System.Drawing.CharacterRange);summary;df-generated | +| System.Drawing;CharacterRange;set_First;(System.Int32);summary;df-generated | +| System.Drawing;CharacterRange;set_Length;(System.Int32);summary;df-generated | | System.Drawing;Color;Equals;(System.Drawing.Color);summary;df-generated | | System.Drawing;Color;Equals;(System.Object);summary;df-generated | | System.Drawing;Color;FromArgb;(System.Int32);summary;df-generated | @@ -25188,6 +28851,572 @@ neutral | System.Drawing;ColorTranslator;FromWin32;(System.Int32);summary;df-generated | | System.Drawing;ColorTranslator;ToOle;(System.Drawing.Color);summary;df-generated | | System.Drawing;ColorTranslator;ToWin32;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Font;Clone;();summary;df-generated | +| System.Drawing;Font;Dispose;();summary;df-generated | +| System.Drawing;Font;Equals;(System.Object);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.Font,System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte,System.Boolean);summary;df-generated | +| System.Drawing;Font;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte,System.Boolean);summary;df-generated | +| System.Drawing;Font;Font;(System.String,System.Single,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Font;FromHdc;(System.IntPtr);summary;df-generated | +| System.Drawing;Font;FromHfont;(System.IntPtr);summary;df-generated | +| System.Drawing;Font;FromLogFont;(System.Object);summary;df-generated | +| System.Drawing;Font;FromLogFont;(System.Object,System.IntPtr);summary;df-generated | +| System.Drawing;Font;GetHashCode;();summary;df-generated | +| System.Drawing;Font;GetHeight;();summary;df-generated | +| System.Drawing;Font;GetHeight;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Font;GetHeight;(System.Single);summary;df-generated | +| System.Drawing;Font;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Drawing;Font;ToHfont;();summary;df-generated | +| System.Drawing;Font;ToLogFont;(System.Object);summary;df-generated | +| System.Drawing;Font;ToLogFont;(System.Object,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Font;ToString;();summary;df-generated | +| System.Drawing;Font;get_Bold;();summary;df-generated | +| System.Drawing;Font;get_FontFamily;();summary;df-generated | +| System.Drawing;Font;get_GdiCharSet;();summary;df-generated | +| System.Drawing;Font;get_GdiVerticalFont;();summary;df-generated | +| System.Drawing;Font;get_Height;();summary;df-generated | +| System.Drawing;Font;get_IsSystemFont;();summary;df-generated | +| System.Drawing;Font;get_Italic;();summary;df-generated | +| System.Drawing;Font;get_Name;();summary;df-generated | +| System.Drawing;Font;get_OriginalFontName;();summary;df-generated | +| System.Drawing;Font;get_Size;();summary;df-generated | +| System.Drawing;Font;get_SizeInPoints;();summary;df-generated | +| System.Drawing;Font;get_Strikeout;();summary;df-generated | +| System.Drawing;Font;get_Style;();summary;df-generated | +| System.Drawing;Font;get_SystemFontName;();summary;df-generated | +| System.Drawing;Font;get_Underline;();summary;df-generated | +| System.Drawing;Font;get_Unit;();summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;Dispose;();summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;GetStandardValuesExclusive;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter+FontNameConverter;GetStandardValuesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter+FontUnitConverter;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;FontConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;FontConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;FontConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Drawing;FontConverter;CreateInstance;(System.ComponentModel.ITypeDescriptorContext,System.Collections.IDictionary);summary;df-generated | +| System.Drawing;FontConverter;GetCreateInstanceSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontConverter;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);summary;df-generated | +| System.Drawing;FontConverter;GetPropertiesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;FontFamily;Dispose;();summary;df-generated | +| System.Drawing;FontFamily;Equals;(System.Object);summary;df-generated | +| System.Drawing;FontFamily;FontFamily;(System.Drawing.Text.GenericFontFamilies);summary;df-generated | +| System.Drawing;FontFamily;FontFamily;(System.String);summary;df-generated | +| System.Drawing;FontFamily;FontFamily;(System.String,System.Drawing.Text.FontCollection);summary;df-generated | +| System.Drawing;FontFamily;GetCellAscent;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;GetCellDescent;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;GetEmHeight;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;GetFamilies;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;FontFamily;GetHashCode;();summary;df-generated | +| System.Drawing;FontFamily;GetLineSpacing;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;GetName;(System.Int32);summary;df-generated | +| System.Drawing;FontFamily;IsStyleAvailable;(System.Drawing.FontStyle);summary;df-generated | +| System.Drawing;FontFamily;ToString;();summary;df-generated | +| System.Drawing;FontFamily;get_Families;();summary;df-generated | +| System.Drawing;FontFamily;get_GenericMonospace;();summary;df-generated | +| System.Drawing;FontFamily;get_GenericSansSerif;();summary;df-generated | +| System.Drawing;FontFamily;get_GenericSerif;();summary;df-generated | +| System.Drawing;FontFamily;get_Name;();summary;df-generated | +| System.Drawing;Graphics;AddMetafileComment;(System.Byte[]);summary;df-generated | +| System.Drawing;Graphics;BeginContainer;();summary;df-generated | +| System.Drawing;Graphics;BeginContainer;(System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;BeginContainer;(System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;Clear;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Graphics;CopyFromScreen;(System.Drawing.Point,System.Drawing.Point,System.Drawing.Size);summary;df-generated | +| System.Drawing;Graphics;CopyFromScreen;(System.Drawing.Point,System.Drawing.Point,System.Drawing.Size,System.Drawing.CopyPixelOperation);summary;df-generated | +| System.Drawing;Graphics;CopyFromScreen;(System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.Size);summary;df-generated | +| System.Drawing;Graphics;CopyFromScreen;(System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.Size,System.Drawing.CopyPixelOperation);summary;df-generated | +| System.Drawing;Graphics;Dispose;();summary;df-generated | +| System.Drawing;Graphics;DrawArc;(System.Drawing.Pen,System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawArc;(System.Drawing.Pen,System.Drawing.RectangleF,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawArc;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawArc;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawBezier;(System.Drawing.Pen,System.Drawing.Point,System.Drawing.Point,System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;DrawBezier;(System.Drawing.Pen,System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;DrawBezier;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawBeziers;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawBeziers;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawClosedCurve;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawClosedCurve;(System.Drawing.Pen,System.Drawing.PointF[],System.Single,System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;DrawClosedCurve;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawClosedCurve;(System.Drawing.Pen,System.Drawing.Point[],System.Single,System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.PointF[],System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.PointF[],System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.PointF[],System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.Point[],System.Int32,System.Int32,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawCurve;(System.Drawing.Pen,System.Drawing.Point[],System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawEllipse;(System.Drawing.Pen,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawEllipse;(System.Drawing.Pen,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;DrawEllipse;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawEllipse;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawIcon;(System.Drawing.Icon,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawIcon;(System.Drawing.Icon,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawIconUnstretched;(System.Drawing.Icon,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Int32,System.Int32,System.Drawing.Rectangle,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Single,System.Single,System.Drawing.RectangleF,System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;DrawImage;(System.Drawing.Image,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaled;(System.Drawing.Image,System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaled;(System.Drawing.Image,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaled;(System.Drawing.Image,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaled;(System.Drawing.Image,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawImageUnscaledAndClipped;(System.Drawing.Image,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawLine;(System.Drawing.Pen,System.Drawing.Point,System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;DrawLine;(System.Drawing.Pen,System.Drawing.PointF,System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;DrawLine;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawLine;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawLines;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawLines;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawPath;(System.Drawing.Pen,System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Graphics;DrawPie;(System.Drawing.Pen,System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawPie;(System.Drawing.Pen,System.Drawing.RectangleF,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawPie;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawPie;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawPolygon;(System.Drawing.Pen,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;DrawPolygon;(System.Drawing.Pen,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;DrawRectangle;(System.Drawing.Pen,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;DrawRectangle;(System.Drawing.Pen,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;DrawRectangle;(System.Drawing.Pen,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawRectangles;(System.Drawing.Pen,System.Drawing.RectangleF[]);summary;df-generated | +| System.Drawing;Graphics;DrawRectangles;(System.Drawing.Pen,System.Drawing.Rectangle[]);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Drawing.PointF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Drawing.RectangleF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;DrawString;(System.String,System.Drawing.Font,System.Drawing.Brush,System.Single,System.Single,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;EndContainer;(System.Drawing.Drawing2D.GraphicsContainer);summary;df-generated | +| System.Drawing;Graphics;ExcludeClip;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;ExcludeClip;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.PointF[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.PointF[],System.Drawing.Drawing2D.FillMode,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.Point[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;FillClosedCurve;(System.Drawing.Brush,System.Drawing.Point[],System.Drawing.Drawing2D.FillMode,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillEllipse;(System.Drawing.Brush,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;FillEllipse;(System.Drawing.Brush,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;FillEllipse;(System.Drawing.Brush,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;FillEllipse;(System.Drawing.Brush,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillPath;(System.Drawing.Brush,System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Graphics;FillPie;(System.Drawing.Brush,System.Drawing.Rectangle,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillPie;(System.Drawing.Brush,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;FillPie;(System.Drawing.Brush,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillPolygon;(System.Drawing.Brush,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;FillPolygon;(System.Drawing.Brush,System.Drawing.PointF[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;FillPolygon;(System.Drawing.Brush,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;FillPolygon;(System.Drawing.Brush,System.Drawing.Point[],System.Drawing.Drawing2D.FillMode);summary;df-generated | +| System.Drawing;Graphics;FillRectangle;(System.Drawing.Brush,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;FillRectangle;(System.Drawing.Brush,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;FillRectangle;(System.Drawing.Brush,System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;FillRectangle;(System.Drawing.Brush,System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;FillRectangles;(System.Drawing.Brush,System.Drawing.RectangleF[]);summary;df-generated | +| System.Drawing;Graphics;FillRectangles;(System.Drawing.Brush,System.Drawing.Rectangle[]);summary;df-generated | +| System.Drawing;Graphics;FillRegion;(System.Drawing.Brush,System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;Flush;();summary;df-generated | +| System.Drawing;Graphics;Flush;(System.Drawing.Drawing2D.FlushIntention);summary;df-generated | +| System.Drawing;Graphics;FromHdc;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromHdc;(System.IntPtr,System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromHdcInternal;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromHwnd;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromHwndInternal;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;FromImage;(System.Drawing.Image);summary;df-generated | +| System.Drawing;Graphics;GetContextInfo;();summary;df-generated | +| System.Drawing;Graphics;GetContextInfo;(System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;GetContextInfo;(System.Drawing.PointF,System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;GetHalftonePalette;();summary;df-generated | +| System.Drawing;Graphics;GetHdc;();summary;df-generated | +| System.Drawing;Graphics;GetNearestColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Graphics;IntersectClip;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;IntersectClip;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;IntersectClip;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Drawing.PointF);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;IsVisible;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;MeasureCharacterRanges;(System.String,System.Drawing.Font,System.Drawing.RectangleF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Drawing.PointF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Drawing.SizeF);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Drawing.SizeF,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Drawing.SizeF,System.Drawing.StringFormat,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Int32);summary;df-generated | +| System.Drawing;Graphics;MeasureString;(System.String,System.Drawing.Font,System.Int32,System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;Graphics;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Graphics;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Graphics;ReleaseHdc;();summary;df-generated | +| System.Drawing;Graphics;ReleaseHdc;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;ReleaseHdcInternal;(System.IntPtr);summary;df-generated | +| System.Drawing;Graphics;ResetClip;();summary;df-generated | +| System.Drawing;Graphics;ResetTransform;();summary;df-generated | +| System.Drawing;Graphics;Restore;(System.Drawing.Drawing2D.GraphicsState);summary;df-generated | +| System.Drawing;Graphics;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing;Graphics;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Graphics;Save;();summary;df-generated | +| System.Drawing;Graphics;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Graphics,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Rectangle,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.RectangleF,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;SetClip;(System.Drawing.Region,System.Drawing.Drawing2D.CombineMode);summary;df-generated | +| System.Drawing;Graphics;TransformPoints;(System.Drawing.Drawing2D.CoordinateSpace,System.Drawing.Drawing2D.CoordinateSpace,System.Drawing.PointF[]);summary;df-generated | +| System.Drawing;Graphics;TransformPoints;(System.Drawing.Drawing2D.CoordinateSpace,System.Drawing.Drawing2D.CoordinateSpace,System.Drawing.Point[]);summary;df-generated | +| System.Drawing;Graphics;TranslateClip;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Graphics;TranslateClip;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Graphics;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Graphics;get_Clip;();summary;df-generated | +| System.Drawing;Graphics;get_ClipBounds;();summary;df-generated | +| System.Drawing;Graphics;get_CompositingMode;();summary;df-generated | +| System.Drawing;Graphics;get_CompositingQuality;();summary;df-generated | +| System.Drawing;Graphics;get_DpiX;();summary;df-generated | +| System.Drawing;Graphics;get_DpiY;();summary;df-generated | +| System.Drawing;Graphics;get_InterpolationMode;();summary;df-generated | +| System.Drawing;Graphics;get_IsClipEmpty;();summary;df-generated | +| System.Drawing;Graphics;get_IsVisibleClipEmpty;();summary;df-generated | +| System.Drawing;Graphics;get_PageScale;();summary;df-generated | +| System.Drawing;Graphics;get_PageUnit;();summary;df-generated | +| System.Drawing;Graphics;get_PixelOffsetMode;();summary;df-generated | +| System.Drawing;Graphics;get_RenderingOrigin;();summary;df-generated | +| System.Drawing;Graphics;get_SmoothingMode;();summary;df-generated | +| System.Drawing;Graphics;get_TextContrast;();summary;df-generated | +| System.Drawing;Graphics;get_TextRenderingHint;();summary;df-generated | +| System.Drawing;Graphics;get_Transform;();summary;df-generated | +| System.Drawing;Graphics;get_TransformElements;();summary;df-generated | +| System.Drawing;Graphics;get_VisibleClipBounds;();summary;df-generated | +| System.Drawing;Graphics;set_Clip;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Graphics;set_CompositingMode;(System.Drawing.Drawing2D.CompositingMode);summary;df-generated | +| System.Drawing;Graphics;set_CompositingQuality;(System.Drawing.Drawing2D.CompositingQuality);summary;df-generated | +| System.Drawing;Graphics;set_InterpolationMode;(System.Drawing.Drawing2D.InterpolationMode);summary;df-generated | +| System.Drawing;Graphics;set_PageScale;(System.Single);summary;df-generated | +| System.Drawing;Graphics;set_PageUnit;(System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Graphics;set_PixelOffsetMode;(System.Drawing.Drawing2D.PixelOffsetMode);summary;df-generated | +| System.Drawing;Graphics;set_RenderingOrigin;(System.Drawing.Point);summary;df-generated | +| System.Drawing;Graphics;set_SmoothingMode;(System.Drawing.Drawing2D.SmoothingMode);summary;df-generated | +| System.Drawing;Graphics;set_TextContrast;(System.Int32);summary;df-generated | +| System.Drawing;Graphics;set_TextRenderingHint;(System.Drawing.Text.TextRenderingHint);summary;df-generated | +| System.Drawing;Graphics;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Graphics;set_TransformElements;(System.Numerics.Matrix3x2);summary;df-generated | +| System.Drawing;IDeviceContext;GetHdc;();summary;df-generated | +| System.Drawing;IDeviceContext;ReleaseHdc;();summary;df-generated | +| System.Drawing;Icon;Clone;();summary;df-generated | +| System.Drawing;Icon;Dispose;();summary;df-generated | +| System.Drawing;Icon;ExtractAssociatedIcon;(System.String);summary;df-generated | +| System.Drawing;Icon;FromHandle;(System.IntPtr);summary;df-generated | +| System.Drawing;Icon;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Drawing;Icon;Icon;(System.Drawing.Icon,System.Drawing.Size);summary;df-generated | +| System.Drawing;Icon;Icon;(System.Drawing.Icon,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Icon;Icon;(System.IO.Stream);summary;df-generated | +| System.Drawing;Icon;Icon;(System.IO.Stream,System.Drawing.Size);summary;df-generated | +| System.Drawing;Icon;Icon;(System.IO.Stream,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Icon;Icon;(System.String);summary;df-generated | +| System.Drawing;Icon;Icon;(System.String,System.Drawing.Size);summary;df-generated | +| System.Drawing;Icon;Icon;(System.String,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Icon;Icon;(System.Type,System.String);summary;df-generated | +| System.Drawing;Icon;Save;(System.IO.Stream);summary;df-generated | +| System.Drawing;Icon;ToBitmap;();summary;df-generated | +| System.Drawing;Icon;ToString;();summary;df-generated | +| System.Drawing;Icon;get_Handle;();summary;df-generated | +| System.Drawing;Icon;get_Height;();summary;df-generated | +| System.Drawing;Icon;get_Size;();summary;df-generated | +| System.Drawing;Icon;get_Width;();summary;df-generated | +| System.Drawing;IconConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;IconConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;IconConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;IconConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Drawing;Image;Clone;();summary;df-generated | +| System.Drawing;Image;Dispose;();summary;df-generated | +| System.Drawing;Image;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing;Image;FromFile;(System.String);summary;df-generated | +| System.Drawing;Image;FromFile;(System.String,System.Boolean);summary;df-generated | +| System.Drawing;Image;FromHbitmap;(System.IntPtr);summary;df-generated | +| System.Drawing;Image;FromHbitmap;(System.IntPtr,System.IntPtr);summary;df-generated | +| System.Drawing;Image;FromStream;(System.IO.Stream);summary;df-generated | +| System.Drawing;Image;FromStream;(System.IO.Stream,System.Boolean);summary;df-generated | +| System.Drawing;Image;FromStream;(System.IO.Stream,System.Boolean,System.Boolean);summary;df-generated | +| System.Drawing;Image;GetBounds;(System.Drawing.GraphicsUnit);summary;df-generated | +| System.Drawing;Image;GetEncoderParameterList;(System.Guid);summary;df-generated | +| System.Drawing;Image;GetFrameCount;(System.Drawing.Imaging.FrameDimension);summary;df-generated | +| System.Drawing;Image;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Drawing;Image;GetPixelFormatSize;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Image;GetPropertyItem;(System.Int32);summary;df-generated | +| System.Drawing;Image;IsAlphaPixelFormat;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Image;IsCanonicalPixelFormat;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Image;IsExtendedPixelFormat;(System.Drawing.Imaging.PixelFormat);summary;df-generated | +| System.Drawing;Image;RemovePropertyItem;(System.Int32);summary;df-generated | +| System.Drawing;Image;RotateFlip;(System.Drawing.RotateFlipType);summary;df-generated | +| System.Drawing;Image;Save;(System.IO.Stream,System.Drawing.Imaging.ImageCodecInfo,System.Drawing.Imaging.EncoderParameters);summary;df-generated | +| System.Drawing;Image;Save;(System.IO.Stream,System.Drawing.Imaging.ImageFormat);summary;df-generated | +| System.Drawing;Image;Save;(System.String);summary;df-generated | +| System.Drawing;Image;Save;(System.String,System.Drawing.Imaging.ImageCodecInfo,System.Drawing.Imaging.EncoderParameters);summary;df-generated | +| System.Drawing;Image;Save;(System.String,System.Drawing.Imaging.ImageFormat);summary;df-generated | +| System.Drawing;Image;SaveAdd;(System.Drawing.Image,System.Drawing.Imaging.EncoderParameters);summary;df-generated | +| System.Drawing;Image;SaveAdd;(System.Drawing.Imaging.EncoderParameters);summary;df-generated | +| System.Drawing;Image;SelectActiveFrame;(System.Drawing.Imaging.FrameDimension,System.Int32);summary;df-generated | +| System.Drawing;Image;SetPropertyItem;(System.Drawing.Imaging.PropertyItem);summary;df-generated | +| System.Drawing;Image;get_Flags;();summary;df-generated | +| System.Drawing;Image;get_FrameDimensionsList;();summary;df-generated | +| System.Drawing;Image;get_Height;();summary;df-generated | +| System.Drawing;Image;get_HorizontalResolution;();summary;df-generated | +| System.Drawing;Image;get_Palette;();summary;df-generated | +| System.Drawing;Image;get_PhysicalDimension;();summary;df-generated | +| System.Drawing;Image;get_PixelFormat;();summary;df-generated | +| System.Drawing;Image;get_PropertyIdList;();summary;df-generated | +| System.Drawing;Image;get_PropertyItems;();summary;df-generated | +| System.Drawing;Image;get_RawFormat;();summary;df-generated | +| System.Drawing;Image;get_Size;();summary;df-generated | +| System.Drawing;Image;get_Tag;();summary;df-generated | +| System.Drawing;Image;get_VerticalResolution;();summary;df-generated | +| System.Drawing;Image;get_Width;();summary;df-generated | +| System.Drawing;Image;set_Palette;(System.Drawing.Imaging.ColorPalette);summary;df-generated | +| System.Drawing;Image;set_Tag;(System.Object);summary;df-generated | +| System.Drawing;ImageAnimator;CanAnimate;(System.Drawing.Image);summary;df-generated | +| System.Drawing;ImageAnimator;UpdateFrames;();summary;df-generated | +| System.Drawing;ImageAnimator;UpdateFrames;(System.Drawing.Image);summary;df-generated | +| System.Drawing;ImageConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;ImageConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;ImageConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;ImageConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Drawing;ImageConverter;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);summary;df-generated | +| System.Drawing;ImageConverter;GetPropertiesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;ImageFormatConverter;CanConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;ImageFormatConverter;CanConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Type);summary;df-generated | +| System.Drawing;ImageFormatConverter;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);summary;df-generated | +| System.Drawing;ImageFormatConverter;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);summary;df-generated | +| System.Drawing;ImageFormatConverter;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;ImageFormatConverter;GetStandardValuesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;Pen;Clone;();summary;df-generated | +| System.Drawing;Pen;Dispose;();summary;df-generated | +| System.Drawing;Pen;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Pen;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Pen;Pen;(System.Drawing.Brush);summary;df-generated | +| System.Drawing;Pen;Pen;(System.Drawing.Brush,System.Single);summary;df-generated | +| System.Drawing;Pen;Pen;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Pen;Pen;(System.Drawing.Color,System.Single);summary;df-generated | +| System.Drawing;Pen;ResetTransform;();summary;df-generated | +| System.Drawing;Pen;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing;Pen;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Pen;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Pen;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Pen;SetLineCap;(System.Drawing.Drawing2D.LineCap,System.Drawing.Drawing2D.LineCap,System.Drawing.Drawing2D.DashCap);summary;df-generated | +| System.Drawing;Pen;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Pen;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;Pen;get_Alignment;();summary;df-generated | +| System.Drawing;Pen;get_Brush;();summary;df-generated | +| System.Drawing;Pen;get_Color;();summary;df-generated | +| System.Drawing;Pen;get_CompoundArray;();summary;df-generated | +| System.Drawing;Pen;get_CustomEndCap;();summary;df-generated | +| System.Drawing;Pen;get_CustomStartCap;();summary;df-generated | +| System.Drawing;Pen;get_DashCap;();summary;df-generated | +| System.Drawing;Pen;get_DashOffset;();summary;df-generated | +| System.Drawing;Pen;get_DashPattern;();summary;df-generated | +| System.Drawing;Pen;get_DashStyle;();summary;df-generated | +| System.Drawing;Pen;get_EndCap;();summary;df-generated | +| System.Drawing;Pen;get_LineJoin;();summary;df-generated | +| System.Drawing;Pen;get_MiterLimit;();summary;df-generated | +| System.Drawing;Pen;get_PenType;();summary;df-generated | +| System.Drawing;Pen;get_StartCap;();summary;df-generated | +| System.Drawing;Pen;get_Transform;();summary;df-generated | +| System.Drawing;Pen;get_Width;();summary;df-generated | +| System.Drawing;Pen;set_Alignment;(System.Drawing.Drawing2D.PenAlignment);summary;df-generated | +| System.Drawing;Pen;set_Brush;(System.Drawing.Brush);summary;df-generated | +| System.Drawing;Pen;set_Color;(System.Drawing.Color);summary;df-generated | +| System.Drawing;Pen;set_CompoundArray;(System.Single[]);summary;df-generated | +| System.Drawing;Pen;set_CustomEndCap;(System.Drawing.Drawing2D.CustomLineCap);summary;df-generated | +| System.Drawing;Pen;set_CustomStartCap;(System.Drawing.Drawing2D.CustomLineCap);summary;df-generated | +| System.Drawing;Pen;set_DashCap;(System.Drawing.Drawing2D.DashCap);summary;df-generated | +| System.Drawing;Pen;set_DashOffset;(System.Single);summary;df-generated | +| System.Drawing;Pen;set_DashPattern;(System.Single[]);summary;df-generated | +| System.Drawing;Pen;set_DashStyle;(System.Drawing.Drawing2D.DashStyle);summary;df-generated | +| System.Drawing;Pen;set_EndCap;(System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing;Pen;set_LineJoin;(System.Drawing.Drawing2D.LineJoin);summary;df-generated | +| System.Drawing;Pen;set_MiterLimit;(System.Single);summary;df-generated | +| System.Drawing;Pen;set_StartCap;(System.Drawing.Drawing2D.LineCap);summary;df-generated | +| System.Drawing;Pen;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Pen;set_Width;(System.Single);summary;df-generated | +| System.Drawing;Pens;get_AliceBlue;();summary;df-generated | +| System.Drawing;Pens;get_AntiqueWhite;();summary;df-generated | +| System.Drawing;Pens;get_Aqua;();summary;df-generated | +| System.Drawing;Pens;get_Aquamarine;();summary;df-generated | +| System.Drawing;Pens;get_Azure;();summary;df-generated | +| System.Drawing;Pens;get_Beige;();summary;df-generated | +| System.Drawing;Pens;get_Bisque;();summary;df-generated | +| System.Drawing;Pens;get_Black;();summary;df-generated | +| System.Drawing;Pens;get_BlanchedAlmond;();summary;df-generated | +| System.Drawing;Pens;get_Blue;();summary;df-generated | +| System.Drawing;Pens;get_BlueViolet;();summary;df-generated | +| System.Drawing;Pens;get_Brown;();summary;df-generated | +| System.Drawing;Pens;get_BurlyWood;();summary;df-generated | +| System.Drawing;Pens;get_CadetBlue;();summary;df-generated | +| System.Drawing;Pens;get_Chartreuse;();summary;df-generated | +| System.Drawing;Pens;get_Chocolate;();summary;df-generated | +| System.Drawing;Pens;get_Coral;();summary;df-generated | +| System.Drawing;Pens;get_CornflowerBlue;();summary;df-generated | +| System.Drawing;Pens;get_Cornsilk;();summary;df-generated | +| System.Drawing;Pens;get_Crimson;();summary;df-generated | +| System.Drawing;Pens;get_Cyan;();summary;df-generated | +| System.Drawing;Pens;get_DarkBlue;();summary;df-generated | +| System.Drawing;Pens;get_DarkCyan;();summary;df-generated | +| System.Drawing;Pens;get_DarkGoldenrod;();summary;df-generated | +| System.Drawing;Pens;get_DarkGray;();summary;df-generated | +| System.Drawing;Pens;get_DarkGreen;();summary;df-generated | +| System.Drawing;Pens;get_DarkKhaki;();summary;df-generated | +| System.Drawing;Pens;get_DarkMagenta;();summary;df-generated | +| System.Drawing;Pens;get_DarkOliveGreen;();summary;df-generated | +| System.Drawing;Pens;get_DarkOrange;();summary;df-generated | +| System.Drawing;Pens;get_DarkOrchid;();summary;df-generated | +| System.Drawing;Pens;get_DarkRed;();summary;df-generated | +| System.Drawing;Pens;get_DarkSalmon;();summary;df-generated | +| System.Drawing;Pens;get_DarkSeaGreen;();summary;df-generated | +| System.Drawing;Pens;get_DarkSlateBlue;();summary;df-generated | +| System.Drawing;Pens;get_DarkSlateGray;();summary;df-generated | +| System.Drawing;Pens;get_DarkTurquoise;();summary;df-generated | +| System.Drawing;Pens;get_DarkViolet;();summary;df-generated | +| System.Drawing;Pens;get_DeepPink;();summary;df-generated | +| System.Drawing;Pens;get_DeepSkyBlue;();summary;df-generated | +| System.Drawing;Pens;get_DimGray;();summary;df-generated | +| System.Drawing;Pens;get_DodgerBlue;();summary;df-generated | +| System.Drawing;Pens;get_Firebrick;();summary;df-generated | +| System.Drawing;Pens;get_FloralWhite;();summary;df-generated | +| System.Drawing;Pens;get_ForestGreen;();summary;df-generated | +| System.Drawing;Pens;get_Fuchsia;();summary;df-generated | +| System.Drawing;Pens;get_Gainsboro;();summary;df-generated | +| System.Drawing;Pens;get_GhostWhite;();summary;df-generated | +| System.Drawing;Pens;get_Gold;();summary;df-generated | +| System.Drawing;Pens;get_Goldenrod;();summary;df-generated | +| System.Drawing;Pens;get_Gray;();summary;df-generated | +| System.Drawing;Pens;get_Green;();summary;df-generated | +| System.Drawing;Pens;get_GreenYellow;();summary;df-generated | +| System.Drawing;Pens;get_Honeydew;();summary;df-generated | +| System.Drawing;Pens;get_HotPink;();summary;df-generated | +| System.Drawing;Pens;get_IndianRed;();summary;df-generated | +| System.Drawing;Pens;get_Indigo;();summary;df-generated | +| System.Drawing;Pens;get_Ivory;();summary;df-generated | +| System.Drawing;Pens;get_Khaki;();summary;df-generated | +| System.Drawing;Pens;get_Lavender;();summary;df-generated | +| System.Drawing;Pens;get_LavenderBlush;();summary;df-generated | +| System.Drawing;Pens;get_LawnGreen;();summary;df-generated | +| System.Drawing;Pens;get_LemonChiffon;();summary;df-generated | +| System.Drawing;Pens;get_LightBlue;();summary;df-generated | +| System.Drawing;Pens;get_LightCoral;();summary;df-generated | +| System.Drawing;Pens;get_LightCyan;();summary;df-generated | +| System.Drawing;Pens;get_LightGoldenrodYellow;();summary;df-generated | +| System.Drawing;Pens;get_LightGray;();summary;df-generated | +| System.Drawing;Pens;get_LightGreen;();summary;df-generated | +| System.Drawing;Pens;get_LightPink;();summary;df-generated | +| System.Drawing;Pens;get_LightSalmon;();summary;df-generated | +| System.Drawing;Pens;get_LightSeaGreen;();summary;df-generated | +| System.Drawing;Pens;get_LightSkyBlue;();summary;df-generated | +| System.Drawing;Pens;get_LightSlateGray;();summary;df-generated | +| System.Drawing;Pens;get_LightSteelBlue;();summary;df-generated | +| System.Drawing;Pens;get_LightYellow;();summary;df-generated | +| System.Drawing;Pens;get_Lime;();summary;df-generated | +| System.Drawing;Pens;get_LimeGreen;();summary;df-generated | +| System.Drawing;Pens;get_Linen;();summary;df-generated | +| System.Drawing;Pens;get_Magenta;();summary;df-generated | +| System.Drawing;Pens;get_Maroon;();summary;df-generated | +| System.Drawing;Pens;get_MediumAquamarine;();summary;df-generated | +| System.Drawing;Pens;get_MediumBlue;();summary;df-generated | +| System.Drawing;Pens;get_MediumOrchid;();summary;df-generated | +| System.Drawing;Pens;get_MediumPurple;();summary;df-generated | +| System.Drawing;Pens;get_MediumSeaGreen;();summary;df-generated | +| System.Drawing;Pens;get_MediumSlateBlue;();summary;df-generated | +| System.Drawing;Pens;get_MediumSpringGreen;();summary;df-generated | +| System.Drawing;Pens;get_MediumTurquoise;();summary;df-generated | +| System.Drawing;Pens;get_MediumVioletRed;();summary;df-generated | +| System.Drawing;Pens;get_MidnightBlue;();summary;df-generated | +| System.Drawing;Pens;get_MintCream;();summary;df-generated | +| System.Drawing;Pens;get_MistyRose;();summary;df-generated | +| System.Drawing;Pens;get_Moccasin;();summary;df-generated | +| System.Drawing;Pens;get_NavajoWhite;();summary;df-generated | +| System.Drawing;Pens;get_Navy;();summary;df-generated | +| System.Drawing;Pens;get_OldLace;();summary;df-generated | +| System.Drawing;Pens;get_Olive;();summary;df-generated | +| System.Drawing;Pens;get_OliveDrab;();summary;df-generated | +| System.Drawing;Pens;get_Orange;();summary;df-generated | +| System.Drawing;Pens;get_OrangeRed;();summary;df-generated | +| System.Drawing;Pens;get_Orchid;();summary;df-generated | +| System.Drawing;Pens;get_PaleGoldenrod;();summary;df-generated | +| System.Drawing;Pens;get_PaleGreen;();summary;df-generated | +| System.Drawing;Pens;get_PaleTurquoise;();summary;df-generated | +| System.Drawing;Pens;get_PaleVioletRed;();summary;df-generated | +| System.Drawing;Pens;get_PapayaWhip;();summary;df-generated | +| System.Drawing;Pens;get_PeachPuff;();summary;df-generated | +| System.Drawing;Pens;get_Peru;();summary;df-generated | +| System.Drawing;Pens;get_Pink;();summary;df-generated | +| System.Drawing;Pens;get_Plum;();summary;df-generated | +| System.Drawing;Pens;get_PowderBlue;();summary;df-generated | +| System.Drawing;Pens;get_Purple;();summary;df-generated | +| System.Drawing;Pens;get_Red;();summary;df-generated | +| System.Drawing;Pens;get_RosyBrown;();summary;df-generated | +| System.Drawing;Pens;get_RoyalBlue;();summary;df-generated | +| System.Drawing;Pens;get_SaddleBrown;();summary;df-generated | +| System.Drawing;Pens;get_Salmon;();summary;df-generated | +| System.Drawing;Pens;get_SandyBrown;();summary;df-generated | +| System.Drawing;Pens;get_SeaGreen;();summary;df-generated | +| System.Drawing;Pens;get_SeaShell;();summary;df-generated | +| System.Drawing;Pens;get_Sienna;();summary;df-generated | +| System.Drawing;Pens;get_Silver;();summary;df-generated | +| System.Drawing;Pens;get_SkyBlue;();summary;df-generated | +| System.Drawing;Pens;get_SlateBlue;();summary;df-generated | +| System.Drawing;Pens;get_SlateGray;();summary;df-generated | +| System.Drawing;Pens;get_Snow;();summary;df-generated | +| System.Drawing;Pens;get_SpringGreen;();summary;df-generated | +| System.Drawing;Pens;get_SteelBlue;();summary;df-generated | +| System.Drawing;Pens;get_Tan;();summary;df-generated | +| System.Drawing;Pens;get_Teal;();summary;df-generated | +| System.Drawing;Pens;get_Thistle;();summary;df-generated | +| System.Drawing;Pens;get_Tomato;();summary;df-generated | +| System.Drawing;Pens;get_Transparent;();summary;df-generated | +| System.Drawing;Pens;get_Turquoise;();summary;df-generated | +| System.Drawing;Pens;get_Violet;();summary;df-generated | +| System.Drawing;Pens;get_Wheat;();summary;df-generated | +| System.Drawing;Pens;get_White;();summary;df-generated | +| System.Drawing;Pens;get_WhiteSmoke;();summary;df-generated | +| System.Drawing;Pens;get_Yellow;();summary;df-generated | +| System.Drawing;Pens;get_YellowGreen;();summary;df-generated | | System.Drawing;Point;Add;(System.Drawing.Point,System.Drawing.Size);summary;df-generated | | System.Drawing;Point;Ceiling;(System.Drawing.PointF);summary;df-generated | | System.Drawing;Point;Equals;(System.Drawing.Point);summary;df-generated | @@ -25326,6 +29555,61 @@ neutral | System.Drawing;RectangleF;set_Width;(System.Single);summary;df-generated | | System.Drawing;RectangleF;set_X;(System.Single);summary;df-generated | | System.Drawing;RectangleF;set_Y;(System.Single);summary;df-generated | +| System.Drawing;Region;Clone;();summary;df-generated | +| System.Drawing;Region;Complement;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Complement;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Complement;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Complement;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Region;Dispose;();summary;df-generated | +| System.Drawing;Region;Equals;(System.Drawing.Region,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;Exclude;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Exclude;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Exclude;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Exclude;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Region;FromHrgn;(System.IntPtr);summary;df-generated | +| System.Drawing;Region;GetBounds;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;GetHrgn;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;GetRegionData;();summary;df-generated | +| System.Drawing;Region;GetRegionScans;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Region;Intersect;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Intersect;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Intersect;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Intersect;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Region;IsEmpty;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsInfinite;(System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.Point);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.Point,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.PointF);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.PointF,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.Rectangle,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Drawing.RectangleF,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Int32,System.Int32,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Int32,System.Int32,System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Single,System.Single,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Single,System.Single,System.Single,System.Single);summary;df-generated | +| System.Drawing;Region;IsVisible;(System.Single,System.Single,System.Single,System.Single,System.Drawing.Graphics);summary;df-generated | +| System.Drawing;Region;MakeEmpty;();summary;df-generated | +| System.Drawing;Region;MakeInfinite;();summary;df-generated | +| System.Drawing;Region;Region;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Region;(System.Drawing.Drawing2D.RegionData);summary;df-generated | +| System.Drawing;Region;Region;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Region;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;ReleaseHrgn;(System.IntPtr);summary;df-generated | +| System.Drawing;Region;Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;Region;Translate;(System.Int32,System.Int32);summary;df-generated | +| System.Drawing;Region;Translate;(System.Single,System.Single);summary;df-generated | +| System.Drawing;Region;Union;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Union;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Union;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Union;(System.Drawing.Region);summary;df-generated | +| System.Drawing;Region;Xor;(System.Drawing.Drawing2D.GraphicsPath);summary;df-generated | +| System.Drawing;Region;Xor;(System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;Region;Xor;(System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;Region;Xor;(System.Drawing.Region);summary;df-generated | | System.Drawing;Size;Add;(System.Drawing.Size,System.Drawing.Size);summary;df-generated | | System.Drawing;Size;Ceiling;(System.Drawing.SizeF);summary;df-generated | | System.Drawing;Size;Equals;(System.Drawing.Size);summary;df-generated | @@ -25391,6 +29675,69 @@ neutral | System.Drawing;SizeFConverter;GetCreateInstanceSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | | System.Drawing;SizeFConverter;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);summary;df-generated | | System.Drawing;SizeFConverter;GetPropertiesSupported;(System.ComponentModel.ITypeDescriptorContext);summary;df-generated | +| System.Drawing;SolidBrush;Clone;();summary;df-generated | +| System.Drawing;SolidBrush;Dispose;(System.Boolean);summary;df-generated | +| System.Drawing;SolidBrush;SolidBrush;(System.Drawing.Color);summary;df-generated | +| System.Drawing;SolidBrush;get_Color;();summary;df-generated | +| System.Drawing;SolidBrush;set_Color;(System.Drawing.Color);summary;df-generated | +| System.Drawing;StringFormat;Clone;();summary;df-generated | +| System.Drawing;StringFormat;Dispose;();summary;df-generated | +| System.Drawing;StringFormat;GetTabStops;(System.Single);summary;df-generated | +| System.Drawing;StringFormat;SetDigitSubstitution;(System.Int32,System.Drawing.StringDigitSubstitute);summary;df-generated | +| System.Drawing;StringFormat;SetMeasurableCharacterRanges;(System.Drawing.CharacterRange[]);summary;df-generated | +| System.Drawing;StringFormat;SetTabStops;(System.Single,System.Single[]);summary;df-generated | +| System.Drawing;StringFormat;StringFormat;(System.Drawing.StringFormat);summary;df-generated | +| System.Drawing;StringFormat;StringFormat;(System.Drawing.StringFormatFlags);summary;df-generated | +| System.Drawing;StringFormat;StringFormat;(System.Drawing.StringFormatFlags,System.Int32);summary;df-generated | +| System.Drawing;StringFormat;ToString;();summary;df-generated | +| System.Drawing;StringFormat;get_Alignment;();summary;df-generated | +| System.Drawing;StringFormat;get_DigitSubstitutionLanguage;();summary;df-generated | +| System.Drawing;StringFormat;get_DigitSubstitutionMethod;();summary;df-generated | +| System.Drawing;StringFormat;get_FormatFlags;();summary;df-generated | +| System.Drawing;StringFormat;get_GenericDefault;();summary;df-generated | +| System.Drawing;StringFormat;get_GenericTypographic;();summary;df-generated | +| System.Drawing;StringFormat;get_HotkeyPrefix;();summary;df-generated | +| System.Drawing;StringFormat;get_LineAlignment;();summary;df-generated | +| System.Drawing;StringFormat;get_Trimming;();summary;df-generated | +| System.Drawing;StringFormat;set_Alignment;(System.Drawing.StringAlignment);summary;df-generated | +| System.Drawing;StringFormat;set_FormatFlags;(System.Drawing.StringFormatFlags);summary;df-generated | +| System.Drawing;StringFormat;set_HotkeyPrefix;(System.Drawing.Text.HotkeyPrefix);summary;df-generated | +| System.Drawing;StringFormat;set_LineAlignment;(System.Drawing.StringAlignment);summary;df-generated | +| System.Drawing;StringFormat;set_Trimming;(System.Drawing.StringTrimming);summary;df-generated | +| System.Drawing;SystemBrushes;FromSystemColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing;SystemBrushes;get_ActiveBorder;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ActiveCaption;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ActiveCaptionText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_AppWorkspace;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ButtonFace;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ButtonHighlight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ButtonShadow;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Control;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlDark;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlDarkDark;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlLight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlLightLight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ControlText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Desktop;();summary;df-generated | +| System.Drawing;SystemBrushes;get_GradientActiveCaption;();summary;df-generated | +| System.Drawing;SystemBrushes;get_GradientInactiveCaption;();summary;df-generated | +| System.Drawing;SystemBrushes;get_GrayText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Highlight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_HighlightText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_HotTrack;();summary;df-generated | +| System.Drawing;SystemBrushes;get_InactiveBorder;();summary;df-generated | +| System.Drawing;SystemBrushes;get_InactiveCaption;();summary;df-generated | +| System.Drawing;SystemBrushes;get_InactiveCaptionText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Info;();summary;df-generated | +| System.Drawing;SystemBrushes;get_InfoText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Menu;();summary;df-generated | +| System.Drawing;SystemBrushes;get_MenuBar;();summary;df-generated | +| System.Drawing;SystemBrushes;get_MenuHighlight;();summary;df-generated | +| System.Drawing;SystemBrushes;get_MenuText;();summary;df-generated | +| System.Drawing;SystemBrushes;get_ScrollBar;();summary;df-generated | +| System.Drawing;SystemBrushes;get_Window;();summary;df-generated | +| System.Drawing;SystemBrushes;get_WindowFrame;();summary;df-generated | +| System.Drawing;SystemBrushes;get_WindowText;();summary;df-generated | | System.Drawing;SystemColors;get_ActiveBorder;();summary;df-generated | | System.Drawing;SystemColors;get_ActiveCaption;();summary;df-generated | | System.Drawing;SystemColors;get_ActiveCaptionText;();summary;df-generated | @@ -25424,6 +29771,93 @@ neutral | System.Drawing;SystemColors;get_Window;();summary;df-generated | | System.Drawing;SystemColors;get_WindowFrame;();summary;df-generated | | System.Drawing;SystemColors;get_WindowText;();summary;df-generated | +| System.Drawing;SystemFonts;GetFontByName;(System.String);summary;df-generated | +| System.Drawing;SystemFonts;get_CaptionFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_DefaultFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_DialogFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_IconTitleFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_MenuFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_MessageBoxFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_SmallCaptionFont;();summary;df-generated | +| System.Drawing;SystemFonts;get_StatusFont;();summary;df-generated | +| System.Drawing;SystemIcons;get_Application;();summary;df-generated | +| System.Drawing;SystemIcons;get_Asterisk;();summary;df-generated | +| System.Drawing;SystemIcons;get_Error;();summary;df-generated | +| System.Drawing;SystemIcons;get_Exclamation;();summary;df-generated | +| System.Drawing;SystemIcons;get_Hand;();summary;df-generated | +| System.Drawing;SystemIcons;get_Information;();summary;df-generated | +| System.Drawing;SystemIcons;get_Question;();summary;df-generated | +| System.Drawing;SystemIcons;get_Shield;();summary;df-generated | +| System.Drawing;SystemIcons;get_Warning;();summary;df-generated | +| System.Drawing;SystemIcons;get_WinLogo;();summary;df-generated | +| System.Drawing;SystemPens;FromSystemColor;(System.Drawing.Color);summary;df-generated | +| System.Drawing;SystemPens;get_ActiveBorder;();summary;df-generated | +| System.Drawing;SystemPens;get_ActiveCaption;();summary;df-generated | +| System.Drawing;SystemPens;get_ActiveCaptionText;();summary;df-generated | +| System.Drawing;SystemPens;get_AppWorkspace;();summary;df-generated | +| System.Drawing;SystemPens;get_ButtonFace;();summary;df-generated | +| System.Drawing;SystemPens;get_ButtonHighlight;();summary;df-generated | +| System.Drawing;SystemPens;get_ButtonShadow;();summary;df-generated | +| System.Drawing;SystemPens;get_Control;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlDark;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlDarkDark;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlLight;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlLightLight;();summary;df-generated | +| System.Drawing;SystemPens;get_ControlText;();summary;df-generated | +| System.Drawing;SystemPens;get_Desktop;();summary;df-generated | +| System.Drawing;SystemPens;get_GradientActiveCaption;();summary;df-generated | +| System.Drawing;SystemPens;get_GradientInactiveCaption;();summary;df-generated | +| System.Drawing;SystemPens;get_GrayText;();summary;df-generated | +| System.Drawing;SystemPens;get_Highlight;();summary;df-generated | +| System.Drawing;SystemPens;get_HighlightText;();summary;df-generated | +| System.Drawing;SystemPens;get_HotTrack;();summary;df-generated | +| System.Drawing;SystemPens;get_InactiveBorder;();summary;df-generated | +| System.Drawing;SystemPens;get_InactiveCaption;();summary;df-generated | +| System.Drawing;SystemPens;get_InactiveCaptionText;();summary;df-generated | +| System.Drawing;SystemPens;get_Info;();summary;df-generated | +| System.Drawing;SystemPens;get_InfoText;();summary;df-generated | +| System.Drawing;SystemPens;get_Menu;();summary;df-generated | +| System.Drawing;SystemPens;get_MenuBar;();summary;df-generated | +| System.Drawing;SystemPens;get_MenuHighlight;();summary;df-generated | +| System.Drawing;SystemPens;get_MenuText;();summary;df-generated | +| System.Drawing;SystemPens;get_ScrollBar;();summary;df-generated | +| System.Drawing;SystemPens;get_Window;();summary;df-generated | +| System.Drawing;SystemPens;get_WindowFrame;();summary;df-generated | +| System.Drawing;SystemPens;get_WindowText;();summary;df-generated | +| System.Drawing;TextureBrush;Clone;();summary;df-generated | +| System.Drawing;TextureBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;TextureBrush;MultiplyTransform;(System.Drawing.Drawing2D.Matrix,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;TextureBrush;ResetTransform;();summary;df-generated | +| System.Drawing;TextureBrush;RotateTransform;(System.Single);summary;df-generated | +| System.Drawing;TextureBrush;RotateTransform;(System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;TextureBrush;ScaleTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;TextureBrush;ScaleTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Drawing2D.WrapMode,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Drawing2D.WrapMode,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Rectangle);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.Rectangle,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.RectangleF);summary;df-generated | +| System.Drawing;TextureBrush;TextureBrush;(System.Drawing.Image,System.Drawing.RectangleF,System.Drawing.Imaging.ImageAttributes);summary;df-generated | +| System.Drawing;TextureBrush;TranslateTransform;(System.Single,System.Single);summary;df-generated | +| System.Drawing;TextureBrush;TranslateTransform;(System.Single,System.Single,System.Drawing.Drawing2D.MatrixOrder);summary;df-generated | +| System.Drawing;TextureBrush;get_Image;();summary;df-generated | +| System.Drawing;TextureBrush;get_Transform;();summary;df-generated | +| System.Drawing;TextureBrush;get_WrapMode;();summary;df-generated | +| System.Drawing;TextureBrush;set_Transform;(System.Drawing.Drawing2D.Matrix);summary;df-generated | +| System.Drawing;TextureBrush;set_WrapMode;(System.Drawing.Drawing2D.WrapMode);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;Equals;(System.Object);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetHashCode;();summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetImage;(System.Object);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetImage;(System.Object,System.Boolean);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetImage;(System.Type);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetImage;(System.Type,System.Boolean);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetImage;(System.Type,System.String,System.Boolean);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;GetImageFromResource;(System.Type,System.String,System.Boolean);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;ToolboxBitmapAttribute;(System.String);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;ToolboxBitmapAttribute;(System.Type);summary;df-generated | +| System.Drawing;ToolboxBitmapAttribute;ToolboxBitmapAttribute;(System.Type,System.String);summary;df-generated | | System.Dynamic;BinaryOperationBinder;BinaryOperationBinder;(System.Linq.Expressions.ExpressionType);summary;df-generated | | System.Dynamic;BinaryOperationBinder;Bind;(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]);summary;df-generated | | System.Dynamic;BinaryOperationBinder;FallbackBinaryOperation;(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject);summary;df-generated | @@ -27830,6 +32264,34 @@ neutral | System.Linq;Queryable;UnionBy;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);summary;df-generated | | System.Linq;Queryable;Zip;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);summary;df-generated | | System.Linq;Queryable;Zip;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);summary;df-generated | +| System.Media;SoundPlayer;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Media;SoundPlayer;Load;();summary;df-generated | +| System.Media;SoundPlayer;LoadAsync;();summary;df-generated | +| System.Media;SoundPlayer;OnLoadCompleted;(System.ComponentModel.AsyncCompletedEventArgs);summary;df-generated | +| System.Media;SoundPlayer;OnSoundLocationChanged;(System.EventArgs);summary;df-generated | +| System.Media;SoundPlayer;OnStreamChanged;(System.EventArgs);summary;df-generated | +| System.Media;SoundPlayer;Play;();summary;df-generated | +| System.Media;SoundPlayer;PlayLooping;();summary;df-generated | +| System.Media;SoundPlayer;PlaySync;();summary;df-generated | +| System.Media;SoundPlayer;SoundPlayer;(System.IO.Stream);summary;df-generated | +| System.Media;SoundPlayer;SoundPlayer;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Media;SoundPlayer;SoundPlayer;(System.String);summary;df-generated | +| System.Media;SoundPlayer;Stop;();summary;df-generated | +| System.Media;SoundPlayer;get_IsLoadCompleted;();summary;df-generated | +| System.Media;SoundPlayer;get_LoadTimeout;();summary;df-generated | +| System.Media;SoundPlayer;get_SoundLocation;();summary;df-generated | +| System.Media;SoundPlayer;get_Stream;();summary;df-generated | +| System.Media;SoundPlayer;get_Tag;();summary;df-generated | +| System.Media;SoundPlayer;set_LoadTimeout;(System.Int32);summary;df-generated | +| System.Media;SoundPlayer;set_SoundLocation;(System.String);summary;df-generated | +| System.Media;SoundPlayer;set_Stream;(System.IO.Stream);summary;df-generated | +| System.Media;SoundPlayer;set_Tag;(System.Object);summary;df-generated | +| System.Media;SystemSound;Play;();summary;df-generated | +| System.Media;SystemSounds;get_Asterisk;();summary;df-generated | +| System.Media;SystemSounds;get_Beep;();summary;df-generated | +| System.Media;SystemSounds;get_Exclamation;();summary;df-generated | +| System.Media;SystemSounds;get_Hand;();summary;df-generated | +| System.Media;SystemSounds;get_Question;();summary;df-generated | | System.Net.Cache;HttpRequestCachePolicy;HttpRequestCachePolicy;(System.Net.Cache.HttpRequestCacheLevel);summary;df-generated | | System.Net.Cache;HttpRequestCachePolicy;ToString;();summary;df-generated | | System.Net.Cache;HttpRequestCachePolicy;get_Level;();summary;df-generated | @@ -28460,6 +32922,22 @@ neutral | System.Net.Mail;SmtpFailedRecipientException;SmtpFailedRecipientException;(System.String,System.Exception);summary;df-generated | | System.Net.Mail;SmtpFailedRecipientsException;SmtpFailedRecipientsException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Net.Mail;SmtpFailedRecipientsException;SmtpFailedRecipientsException;(System.String);summary;df-generated | +| System.Net.Mail;SmtpPermission;AddPermission;(System.Net.Mail.SmtpAccess);summary;df-generated | +| System.Net.Mail;SmtpPermission;Copy;();summary;df-generated | +| System.Net.Mail;SmtpPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Net.Mail;SmtpPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Net.Mail;SmtpPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Net.Mail;SmtpPermission;IsUnrestricted;();summary;df-generated | +| System.Net.Mail;SmtpPermission;SmtpPermission;(System.Boolean);summary;df-generated | +| System.Net.Mail;SmtpPermission;SmtpPermission;(System.Net.Mail.SmtpAccess);summary;df-generated | +| System.Net.Mail;SmtpPermission;SmtpPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Net.Mail;SmtpPermission;ToXml;();summary;df-generated | +| System.Net.Mail;SmtpPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Net.Mail;SmtpPermission;get_Access;();summary;df-generated | +| System.Net.Mail;SmtpPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Net.Mail;SmtpPermissionAttribute;SmtpPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Net.Mail;SmtpPermissionAttribute;get_Access;();summary;df-generated | +| System.Net.Mail;SmtpPermissionAttribute;set_Access;(System.String);summary;df-generated | | System.Net.Mime;ContentDisposition;Equals;(System.Object);summary;df-generated | | System.Net.Mime;ContentDisposition;GetHashCode;();summary;df-generated | | System.Net.Mime;ContentDisposition;get_CreationDate;();summary;df-generated | @@ -28658,6 +33136,20 @@ neutral | System.Net.NetworkInformation;NetworkInformationException;NetworkInformationException;(System.Int32);summary;df-generated | | System.Net.NetworkInformation;NetworkInformationException;NetworkInformationException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Net.NetworkInformation;NetworkInformationException;get_ErrorCode;();summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;AddPermission;(System.Net.NetworkInformation.NetworkInformationAccess);summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;IsUnrestricted;();summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;NetworkInformationPermission;(System.Net.NetworkInformation.NetworkInformationAccess);summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;NetworkInformationPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;ToXml;();summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;get_Access;();summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermissionAttribute;NetworkInformationPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermissionAttribute;get_Access;();summary;df-generated | +| System.Net.NetworkInformation;NetworkInformationPermissionAttribute;set_Access;(System.String);summary;df-generated | | System.Net.NetworkInformation;NetworkInterface;GetAllNetworkInterfaces;();summary;df-generated | | System.Net.NetworkInformation;NetworkInterface;GetIPProperties;();summary;df-generated | | System.Net.NetworkInformation;NetworkInterface;GetIPStatistics;();summary;df-generated | @@ -28761,6 +33253,26 @@ neutral | System.Net.NetworkInformation;UnicastIPAddressInformationCollection;Remove;(System.Net.NetworkInformation.UnicastIPAddressInformation);summary;df-generated | | System.Net.NetworkInformation;UnicastIPAddressInformationCollection;get_Count;();summary;df-generated | | System.Net.NetworkInformation;UnicastIPAddressInformationCollection;get_IsReadOnly;();summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermission;Copy;();summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermission;IsUnrestricted;();summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermission;PeerCollaborationPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermission;ToXml;();summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Net.PeerToPeer.Collaboration;PeerCollaborationPermissionAttribute;PeerCollaborationPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Net.PeerToPeer;PnrpPermission;Copy;();summary;df-generated | +| System.Net.PeerToPeer;PnrpPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Net.PeerToPeer;PnrpPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Net.PeerToPeer;PnrpPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Net.PeerToPeer;PnrpPermission;IsUnrestricted;();summary;df-generated | +| System.Net.PeerToPeer;PnrpPermission;PnrpPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Net.PeerToPeer;PnrpPermission;ToXml;();summary;df-generated | +| System.Net.PeerToPeer;PnrpPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Net.PeerToPeer;PnrpPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Net.PeerToPeer;PnrpPermissionAttribute;PnrpPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | | System.Net.Quic;QuicClientConnectionOptions;get_ClientAuthenticationOptions;();summary;df-generated | | System.Net.Quic;QuicClientConnectionOptions;get_LocalEndPoint;();summary;df-generated | | System.Net.Quic;QuicClientConnectionOptions;get_RemoteEndPoint;();summary;df-generated | @@ -29533,11 +34045,26 @@ neutral | System.Net;DnsEndPoint;GetHashCode;();summary;df-generated | | System.Net;DnsEndPoint;get_AddressFamily;();summary;df-generated | | System.Net;DnsEndPoint;get_Port;();summary;df-generated | +| System.Net;DnsPermission;Copy;();summary;df-generated | +| System.Net;DnsPermission;DnsPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Net;DnsPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Net;DnsPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Net;DnsPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Net;DnsPermission;IsUnrestricted;();summary;df-generated | +| System.Net;DnsPermission;ToXml;();summary;df-generated | +| System.Net;DnsPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Net;DnsPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Net;DnsPermissionAttribute;DnsPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | | System.Net;DownloadProgressChangedEventArgs;get_BytesReceived;();summary;df-generated | | System.Net;DownloadProgressChangedEventArgs;get_TotalBytesToReceive;();summary;df-generated | | System.Net;EndPoint;Create;(System.Net.SocketAddress);summary;df-generated | | System.Net;EndPoint;Serialize;();summary;df-generated | | System.Net;EndPoint;get_AddressFamily;();summary;df-generated | +| System.Net;EndpointPermission;Equals;(System.Object);summary;df-generated | +| System.Net;EndpointPermission;GetHashCode;();summary;df-generated | +| System.Net;EndpointPermission;get_Hostname;();summary;df-generated | +| System.Net;EndpointPermission;get_Port;();summary;df-generated | +| System.Net;EndpointPermission;get_Transport;();summary;df-generated | | System.Net;FileWebRequest;Abort;();summary;df-generated | | System.Net;FileWebRequest;FileWebRequest;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Net;FileWebRequest;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | @@ -29904,6 +34431,28 @@ neutral | System.Net;SocketAddress;get_Item;(System.Int32);summary;df-generated | | System.Net;SocketAddress;get_Size;();summary;df-generated | | System.Net;SocketAddress;set_Item;(System.Int32,System.Byte);summary;df-generated | +| System.Net;SocketPermission;AddPermission;(System.Net.NetworkAccess,System.Net.TransportType,System.String,System.Int32);summary;df-generated | +| System.Net;SocketPermission;Copy;();summary;df-generated | +| System.Net;SocketPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Net;SocketPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Net;SocketPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Net;SocketPermission;IsUnrestricted;();summary;df-generated | +| System.Net;SocketPermission;SocketPermission;(System.Net.NetworkAccess,System.Net.TransportType,System.String,System.Int32);summary;df-generated | +| System.Net;SocketPermission;SocketPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Net;SocketPermission;ToXml;();summary;df-generated | +| System.Net;SocketPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Net;SocketPermission;get_AcceptList;();summary;df-generated | +| System.Net;SocketPermission;get_ConnectList;();summary;df-generated | +| System.Net;SocketPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Net;SocketPermissionAttribute;SocketPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Net;SocketPermissionAttribute;get_Access;();summary;df-generated | +| System.Net;SocketPermissionAttribute;get_Host;();summary;df-generated | +| System.Net;SocketPermissionAttribute;get_Port;();summary;df-generated | +| System.Net;SocketPermissionAttribute;get_Transport;();summary;df-generated | +| System.Net;SocketPermissionAttribute;set_Access;(System.String);summary;df-generated | +| System.Net;SocketPermissionAttribute;set_Host;(System.String);summary;df-generated | +| System.Net;SocketPermissionAttribute;set_Port;(System.String);summary;df-generated | +| System.Net;SocketPermissionAttribute;set_Transport;(System.String);summary;df-generated | | System.Net;TransportContext;GetChannelBinding;(System.Security.Authentication.ExtendedProtection.ChannelBindingKind);summary;df-generated | | System.Net;UploadProgressChangedEventArgs;get_BytesReceived;();summary;df-generated | | System.Net;UploadProgressChangedEventArgs;get_BytesSent;();summary;df-generated | @@ -29965,6 +34514,30 @@ neutral | System.Net;WebHeaderCollection;get_Keys;();summary;df-generated | | System.Net;WebHeaderCollection;set_Item;(System.Net.HttpRequestHeader,System.String);summary;df-generated | | System.Net;WebHeaderCollection;set_Item;(System.Net.HttpResponseHeader,System.String);summary;df-generated | +| System.Net;WebPermission;AddPermission;(System.Net.NetworkAccess,System.String);summary;df-generated | +| System.Net;WebPermission;AddPermission;(System.Net.NetworkAccess,System.Text.RegularExpressions.Regex);summary;df-generated | +| System.Net;WebPermission;Copy;();summary;df-generated | +| System.Net;WebPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Net;WebPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Net;WebPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Net;WebPermission;IsUnrestricted;();summary;df-generated | +| System.Net;WebPermission;ToXml;();summary;df-generated | +| System.Net;WebPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Net;WebPermission;WebPermission;(System.Net.NetworkAccess,System.String);summary;df-generated | +| System.Net;WebPermission;WebPermission;(System.Net.NetworkAccess,System.Text.RegularExpressions.Regex);summary;df-generated | +| System.Net;WebPermission;WebPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Net;WebPermission;get_AcceptList;();summary;df-generated | +| System.Net;WebPermission;get_ConnectList;();summary;df-generated | +| System.Net;WebPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Net;WebPermissionAttribute;WebPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Net;WebPermissionAttribute;get_Accept;();summary;df-generated | +| System.Net;WebPermissionAttribute;get_AcceptPattern;();summary;df-generated | +| System.Net;WebPermissionAttribute;get_Connect;();summary;df-generated | +| System.Net;WebPermissionAttribute;get_ConnectPattern;();summary;df-generated | +| System.Net;WebPermissionAttribute;set_Accept;(System.String);summary;df-generated | +| System.Net;WebPermissionAttribute;set_AcceptPattern;(System.String);summary;df-generated | +| System.Net;WebPermissionAttribute;set_Connect;(System.String);summary;df-generated | +| System.Net;WebPermissionAttribute;set_ConnectPattern;(System.String);summary;df-generated | | System.Net;WebProxy;GetDefaultProxy;();summary;df-generated | | System.Net;WebProxy;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Net;WebProxy;IsBypassed;(System.Uri);summary;df-generated | @@ -40141,6 +44714,10 @@ neutral | System.Security.Cryptography.X509Certificates;X509Certificate2Enumerator;Dispose;();summary;df-generated | | System.Security.Cryptography.X509Certificates;X509Certificate2Enumerator;MoveNext;();summary;df-generated | | System.Security.Cryptography.X509Certificates;X509Certificate2Enumerator;Reset;();summary;df-generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2UI;DisplayCertificate;(System.Security.Cryptography.X509Certificates.X509Certificate2);summary;df-generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2UI;DisplayCertificate;(System.Security.Cryptography.X509Certificates.X509Certificate2,System.IntPtr);summary;df-generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2UI;SelectFromCollection;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.String,System.String,System.Security.Cryptography.X509Certificates.X509SelectionFlag);summary;df-generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2UI;SelectFromCollection;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.String,System.String,System.Security.Cryptography.X509Certificates.X509SelectionFlag,System.IntPtr);summary;df-generated | | System.Security.Cryptography.X509Certificates;X509Certificate;CreateFromCertFile;(System.String);summary;df-generated | | System.Security.Cryptography.X509Certificates;X509Certificate;CreateFromSignedFile;(System.String);summary;df-generated | | System.Security.Cryptography.X509Certificates;X509Certificate;Dispose;();summary;df-generated | @@ -41332,6 +45909,8 @@ neutral | System.Security.Cryptography;PemFields;get_DecodedDataLength;();summary;df-generated | | System.Security.Cryptography;PemFields;get_Label;();summary;df-generated | | System.Security.Cryptography;PemFields;get_Location;();summary;df-generated | +| System.Security.Cryptography;ProtectedData;Protect;(System.Byte[],System.Byte[],System.Security.Cryptography.DataProtectionScope);summary;df-generated | +| System.Security.Cryptography;ProtectedData;Unprotect;(System.Byte[],System.Byte[],System.Security.Cryptography.DataProtectionScope);summary;df-generated | | System.Security.Cryptography;RC2;Create;();summary;df-generated | | System.Security.Cryptography;RC2;Create;(System.String);summary;df-generated | | System.Security.Cryptography;RC2;get_EffectiveKeySize;();summary;df-generated | @@ -41785,12 +46364,377 @@ neutral | System.Security.Cryptography;TripleDESCryptoServiceProvider;set_Mode;(System.Security.Cryptography.CipherMode);summary;df-generated | | System.Security.Cryptography;TripleDESCryptoServiceProvider;set_Padding;(System.Security.Cryptography.PaddingMode);summary;df-generated | | System.Security.Permissions;CodeAccessSecurityAttribute;CodeAccessSecurityAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;Copy;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;DataProtectionPermission;(System.Security.Permissions.DataProtectionPermissionFlags);summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;DataProtectionPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;get_Flags;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermission;set_Flags;(System.Security.Permissions.DataProtectionPermissionFlags);summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;DataProtectionPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;get_Flags;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;get_ProtectData;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;get_ProtectMemory;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;get_UnprotectData;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;get_UnprotectMemory;();summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;set_Flags;(System.Security.Permissions.DataProtectionPermissionFlags);summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;set_ProtectData;(System.Boolean);summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;set_ProtectMemory;(System.Boolean);summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;set_UnprotectData;(System.Boolean);summary;df-generated | +| System.Security.Permissions;DataProtectionPermissionAttribute;set_UnprotectMemory;(System.Boolean);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;AddPathList;(System.Security.Permissions.EnvironmentPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;Copy;();summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;EnvironmentPermission;(System.Security.Permissions.EnvironmentPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;EnvironmentPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;GetPathList;(System.Security.Permissions.EnvironmentPermissionAccess);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;SetPathList;(System.Security.Permissions.EnvironmentPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;EnvironmentPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;EnvironmentPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;EnvironmentPermissionAttribute;EnvironmentPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;EnvironmentPermissionAttribute;get_All;();summary;df-generated | +| System.Security.Permissions;EnvironmentPermissionAttribute;get_Read;();summary;df-generated | +| System.Security.Permissions;EnvironmentPermissionAttribute;get_Write;();summary;df-generated | +| System.Security.Permissions;EnvironmentPermissionAttribute;set_All;(System.String);summary;df-generated | +| System.Security.Permissions;EnvironmentPermissionAttribute;set_Read;(System.String);summary;df-generated | +| System.Security.Permissions;EnvironmentPermissionAttribute;set_Write;(System.String);summary;df-generated | +| System.Security.Permissions;FileDialogPermission;FileDialogPermission;(System.Security.Permissions.FileDialogPermissionAccess);summary;df-generated | +| System.Security.Permissions;FileDialogPermission;FileDialogPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;FileDialogPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;FileDialogPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;FileDialogPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;FileDialogPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;FileDialogPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;FileDialogPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;FileDialogPermission;get_Access;();summary;df-generated | +| System.Security.Permissions;FileDialogPermission;set_Access;(System.Security.Permissions.FileDialogPermissionAccess);summary;df-generated | +| System.Security.Permissions;FileDialogPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;FileDialogPermissionAttribute;FileDialogPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;FileDialogPermissionAttribute;get_Open;();summary;df-generated | +| System.Security.Permissions;FileDialogPermissionAttribute;get_Save;();summary;df-generated | +| System.Security.Permissions;FileDialogPermissionAttribute;set_Open;(System.Boolean);summary;df-generated | +| System.Security.Permissions;FileDialogPermissionAttribute;set_Save;(System.Boolean);summary;df-generated | +| System.Security.Permissions;FileIOPermission;AddPathList;(System.Security.Permissions.FileIOPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermission;AddPathList;(System.Security.Permissions.FileIOPermissionAccess,System.String[]);summary;df-generated | +| System.Security.Permissions;FileIOPermission;Equals;(System.Object);summary;df-generated | +| System.Security.Permissions;FileIOPermission;FileIOPermission;(System.Security.Permissions.FileIOPermissionAccess,System.Security.AccessControl.AccessControlActions,System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermission;FileIOPermission;(System.Security.Permissions.FileIOPermissionAccess,System.Security.AccessControl.AccessControlActions,System.String[]);summary;df-generated | +| System.Security.Permissions;FileIOPermission;FileIOPermission;(System.Security.Permissions.FileIOPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermission;FileIOPermission;(System.Security.Permissions.FileIOPermissionAccess,System.String[]);summary;df-generated | +| System.Security.Permissions;FileIOPermission;FileIOPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;FileIOPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;FileIOPermission;GetHashCode;();summary;df-generated | +| System.Security.Permissions;FileIOPermission;GetPathList;(System.Security.Permissions.FileIOPermissionAccess);summary;df-generated | +| System.Security.Permissions;FileIOPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;FileIOPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;FileIOPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;FileIOPermission;SetPathList;(System.Security.Permissions.FileIOPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermission;SetPathList;(System.Security.Permissions.FileIOPermissionAccess,System.String[]);summary;df-generated | +| System.Security.Permissions;FileIOPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;FileIOPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;FileIOPermission;get_AllFiles;();summary;df-generated | +| System.Security.Permissions;FileIOPermission;get_AllLocalFiles;();summary;df-generated | +| System.Security.Permissions;FileIOPermission;set_AllFiles;(System.Security.Permissions.FileIOPermissionAccess);summary;df-generated | +| System.Security.Permissions;FileIOPermission;set_AllLocalFiles;(System.Security.Permissions.FileIOPermissionAccess);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;FileIOPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_All;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_AllFiles;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_AllLocalFiles;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_Append;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_ChangeAccessControl;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_PathDiscovery;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_Read;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_ViewAccessControl;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_ViewAndModify;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;get_Write;();summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_All;(System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_AllFiles;(System.Security.Permissions.FileIOPermissionAccess);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_AllLocalFiles;(System.Security.Permissions.FileIOPermissionAccess);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_Append;(System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_ChangeAccessControl;(System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_PathDiscovery;(System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_Read;(System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_ViewAccessControl;(System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_ViewAndModify;(System.String);summary;df-generated | +| System.Security.Permissions;FileIOPermissionAttribute;set_Write;(System.String);summary;df-generated | +| System.Security.Permissions;GacIdentityPermission;Copy;();summary;df-generated | +| System.Security.Permissions;GacIdentityPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;GacIdentityPermission;GacIdentityPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;GacIdentityPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;GacIdentityPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;GacIdentityPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;GacIdentityPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;GacIdentityPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;GacIdentityPermissionAttribute;GacIdentityPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;HostProtectionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_ExternalProcessMgmt;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_ExternalThreading;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_MayLeakOnAbort;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_Resources;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_SecurityInfrastructure;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_SelfAffectingProcessMgmt;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_SelfAffectingThreading;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_SharedState;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_Synchronization;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;get_UI;();summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_ExternalProcessMgmt;(System.Boolean);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_ExternalThreading;(System.Boolean);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_MayLeakOnAbort;(System.Boolean);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_Resources;(System.Security.Permissions.HostProtectionResource);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_SecurityInfrastructure;(System.Boolean);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_SelfAffectingProcessMgmt;(System.Boolean);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_SelfAffectingThreading;(System.Boolean);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_SharedState;(System.Boolean);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_Synchronization;(System.Boolean);summary;df-generated | +| System.Security.Permissions;HostProtectionAttribute;set_UI;(System.Boolean);summary;df-generated | +| System.Security.Permissions;IUnrestrictedPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;IsolatedStorageFilePermission;Copy;();summary;df-generated | +| System.Security.Permissions;IsolatedStorageFilePermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;IsolatedStorageFilePermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;IsolatedStorageFilePermission;IsolatedStorageFilePermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;IsolatedStorageFilePermission;ToXml;();summary;df-generated | +| System.Security.Permissions;IsolatedStorageFilePermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;IsolatedStorageFilePermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;IsolatedStorageFilePermissionAttribute;IsolatedStorageFilePermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermission;IsolatedStoragePermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermission;ToXml;();summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermission;get_UsageAllowed;();summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermission;get_UserQuota;();summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermission;set_UsageAllowed;(System.Security.Permissions.IsolatedStorageContainment);summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermission;set_UserQuota;(System.Int64);summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermissionAttribute;IsolatedStoragePermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermissionAttribute;get_UsageAllowed;();summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermissionAttribute;get_UserQuota;();summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermissionAttribute;set_UsageAllowed;(System.Security.Permissions.IsolatedStorageContainment);summary;df-generated | +| System.Security.Permissions;IsolatedStoragePermissionAttribute;set_UserQuota;(System.Int64);summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;Copy;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;KeyContainerPermission;(System.Security.Permissions.KeyContainerPermissionFlags);summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;KeyContainerPermission;(System.Security.Permissions.KeyContainerPermissionFlags,System.Security.Permissions.KeyContainerPermissionAccessEntry[]);summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;KeyContainerPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;get_AccessEntries;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermission;get_Flags;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;Equals;(System.Object);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;GetHashCode;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;KeyContainerPermissionAccessEntry;(System.Security.Cryptography.CspParameters,System.Security.Permissions.KeyContainerPermissionFlags);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;KeyContainerPermissionAccessEntry;(System.String,System.Security.Permissions.KeyContainerPermissionFlags);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;KeyContainerPermissionAccessEntry;(System.String,System.String,System.Int32,System.String,System.Int32,System.Security.Permissions.KeyContainerPermissionFlags);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;get_Flags;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;get_KeyContainerName;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;get_KeySpec;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;get_KeyStore;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;get_ProviderName;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;get_ProviderType;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;set_Flags;(System.Security.Permissions.KeyContainerPermissionFlags);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;set_KeyContainerName;(System.String);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;set_KeySpec;(System.Int32);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;set_KeyStore;(System.String);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;set_ProviderName;(System.String);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntry;set_ProviderType;(System.Int32);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;Add;(System.Security.Permissions.KeyContainerPermissionAccessEntry);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;CopyTo;(System.Array,System.Int32);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;CopyTo;(System.Security.Permissions.KeyContainerPermissionAccessEntry[],System.Int32);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;GetEnumerator;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;IndexOf;(System.Security.Permissions.KeyContainerPermissionAccessEntry);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;Remove;(System.Security.Permissions.KeyContainerPermissionAccessEntry);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;get_Count;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;get_IsSynchronized;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;get_Item;(System.Int32);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;get_SyncRoot;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryEnumerator;MoveNext;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryEnumerator;Reset;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryEnumerator;get_Current;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;KeyContainerPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;get_Flags;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;get_KeyContainerName;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;get_KeySpec;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;get_KeyStore;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;get_ProviderName;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;get_ProviderType;();summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;set_Flags;(System.Security.Permissions.KeyContainerPermissionFlags);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;set_KeyContainerName;(System.String);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;set_KeySpec;(System.Int32);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;set_KeyStore;(System.String);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;set_ProviderName;(System.String);summary;df-generated | +| System.Security.Permissions;KeyContainerPermissionAttribute;set_ProviderType;(System.Int32);summary;df-generated | +| System.Security.Permissions;MediaPermission;Copy;();summary;df-generated | +| System.Security.Permissions;MediaPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;MediaPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;MediaPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;MediaPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;MediaPermission;MediaPermission;(System.Security.Permissions.MediaPermissionAudio);summary;df-generated | +| System.Security.Permissions;MediaPermission;MediaPermission;(System.Security.Permissions.MediaPermissionAudio,System.Security.Permissions.MediaPermissionVideo,System.Security.Permissions.MediaPermissionImage);summary;df-generated | +| System.Security.Permissions;MediaPermission;MediaPermission;(System.Security.Permissions.MediaPermissionImage);summary;df-generated | +| System.Security.Permissions;MediaPermission;MediaPermission;(System.Security.Permissions.MediaPermissionVideo);summary;df-generated | +| System.Security.Permissions;MediaPermission;MediaPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;MediaPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;MediaPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;MediaPermission;get_Audio;();summary;df-generated | +| System.Security.Permissions;MediaPermission;get_Image;();summary;df-generated | +| System.Security.Permissions;MediaPermission;get_Video;();summary;df-generated | +| System.Security.Permissions;MediaPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;MediaPermissionAttribute;MediaPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;MediaPermissionAttribute;get_Audio;();summary;df-generated | +| System.Security.Permissions;MediaPermissionAttribute;get_Image;();summary;df-generated | +| System.Security.Permissions;MediaPermissionAttribute;get_Video;();summary;df-generated | +| System.Security.Permissions;MediaPermissionAttribute;set_Audio;(System.Security.Permissions.MediaPermissionAudio);summary;df-generated | +| System.Security.Permissions;MediaPermissionAttribute;set_Image;(System.Security.Permissions.MediaPermissionImage);summary;df-generated | +| System.Security.Permissions;MediaPermissionAttribute;set_Video;(System.Security.Permissions.MediaPermissionVideo);summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;CreatePermissionSet;();summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;PermissionSetAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;get_File;();summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;get_Hex;();summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;get_Name;();summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;get_UnicodeEncoded;();summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;get_XML;();summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;set_File;(System.String);summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;set_Hex;(System.String);summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;set_Name;(System.String);summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;set_UnicodeEncoded;(System.Boolean);summary;df-generated | +| System.Security.Permissions;PermissionSetAttribute;set_XML;(System.String);summary;df-generated | +| System.Security.Permissions;PrincipalPermission;Demand;();summary;df-generated | +| System.Security.Permissions;PrincipalPermission;Equals;(System.Object);summary;df-generated | +| System.Security.Permissions;PrincipalPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;PrincipalPermission;GetHashCode;();summary;df-generated | +| System.Security.Permissions;PrincipalPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;PrincipalPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;PrincipalPermission;PrincipalPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;PrincipalPermission;PrincipalPermission;(System.String,System.String);summary;df-generated | +| System.Security.Permissions;PrincipalPermission;PrincipalPermission;(System.String,System.String,System.Boolean);summary;df-generated | +| System.Security.Permissions;PrincipalPermission;ToString;();summary;df-generated | +| System.Security.Permissions;PrincipalPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;PrincipalPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;PrincipalPermissionAttribute;PrincipalPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;PrincipalPermissionAttribute;get_Authenticated;();summary;df-generated | +| System.Security.Permissions;PrincipalPermissionAttribute;get_Name;();summary;df-generated | +| System.Security.Permissions;PrincipalPermissionAttribute;get_Role;();summary;df-generated | +| System.Security.Permissions;PrincipalPermissionAttribute;set_Authenticated;(System.Boolean);summary;df-generated | +| System.Security.Permissions;PrincipalPermissionAttribute;set_Name;(System.String);summary;df-generated | +| System.Security.Permissions;PrincipalPermissionAttribute;set_Role;(System.String);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;PublisherIdentityPermission;(System.Security.Cryptography.X509Certificates.X509Certificate);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;PublisherIdentityPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;get_Certificate;();summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;set_Certificate;(System.Security.Cryptography.X509Certificates.X509Certificate);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermissionAttribute;PublisherIdentityPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermissionAttribute;get_CertFile;();summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermissionAttribute;get_SignedFile;();summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermissionAttribute;get_X509Certificate;();summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermissionAttribute;set_CertFile;(System.String);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermissionAttribute;set_SignedFile;(System.String);summary;df-generated | +| System.Security.Permissions;PublisherIdentityPermissionAttribute;set_X509Certificate;(System.String);summary;df-generated | +| System.Security.Permissions;ReflectionPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;ReflectionPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ReflectionPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ReflectionPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;ReflectionPermission;ReflectionPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;ReflectionPermission;ReflectionPermission;(System.Security.Permissions.ReflectionPermissionFlag);summary;df-generated | +| System.Security.Permissions;ReflectionPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;ReflectionPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ReflectionPermission;get_Flags;();summary;df-generated | +| System.Security.Permissions;ReflectionPermission;set_Flags;(System.Security.Permissions.ReflectionPermissionFlag);summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;ReflectionPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;get_Flags;();summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;get_MemberAccess;();summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;get_ReflectionEmit;();summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;get_RestrictedMemberAccess;();summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;get_TypeInformation;();summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;set_Flags;(System.Security.Permissions.ReflectionPermissionFlag);summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;set_MemberAccess;(System.Boolean);summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;set_ReflectionEmit;(System.Boolean);summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;set_RestrictedMemberAccess;(System.Boolean);summary;df-generated | +| System.Security.Permissions;ReflectionPermissionAttribute;set_TypeInformation;(System.Boolean);summary;df-generated | +| System.Security.Permissions;RegistryPermission;AddPathList;(System.Security.Permissions.RegistryPermissionAccess,System.Security.AccessControl.AccessControlActions,System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermission;AddPathList;(System.Security.Permissions.RegistryPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermission;Copy;();summary;df-generated | +| System.Security.Permissions;RegistryPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;RegistryPermission;GetPathList;(System.Security.Permissions.RegistryPermissionAccess);summary;df-generated | +| System.Security.Permissions;RegistryPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;RegistryPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;RegistryPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;RegistryPermission;RegistryPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;RegistryPermission;RegistryPermission;(System.Security.Permissions.RegistryPermissionAccess,System.Security.AccessControl.AccessControlActions,System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermission;RegistryPermission;(System.Security.Permissions.RegistryPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermission;SetPathList;(System.Security.Permissions.RegistryPermissionAccess,System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;RegistryPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;RegistryPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;get_All;();summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;get_ChangeAccessControl;();summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;get_Create;();summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;get_Read;();summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;get_ViewAccessControl;();summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;get_ViewAndModify;();summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;get_Write;();summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;set_All;(System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;set_ChangeAccessControl;(System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;set_Create;(System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;set_Read;(System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;set_ViewAccessControl;(System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;set_ViewAndModify;(System.String);summary;df-generated | +| System.Security.Permissions;RegistryPermissionAttribute;set_Write;(System.String);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;AddPermissionAccess;(System.Security.Permissions.ResourcePermissionBaseEntry);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;Clear;();summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;Copy;();summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;GetPermissionEntries;();summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;RemovePermissionAccess;(System.Security.Permissions.ResourcePermissionBaseEntry);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;ResourcePermissionBase;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;ToXml;();summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;get_PermissionAccessType;();summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;get_TagNames;();summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;set_PermissionAccessType;(System.Type);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBase;set_TagNames;(System.String[]);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBaseEntry;ResourcePermissionBaseEntry;(System.Int32,System.String[]);summary;df-generated | +| System.Security.Permissions;ResourcePermissionBaseEntry;get_PermissionAccess;();summary;df-generated | +| System.Security.Permissions;ResourcePermissionBaseEntry;get_PermissionAccessPath;();summary;df-generated | | System.Security.Permissions;SecurityAttribute;CreatePermission;();summary;df-generated | | System.Security.Permissions;SecurityAttribute;SecurityAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | | System.Security.Permissions;SecurityAttribute;get_Action;();summary;df-generated | | System.Security.Permissions;SecurityAttribute;get_Unrestricted;();summary;df-generated | | System.Security.Permissions;SecurityAttribute;set_Action;(System.Security.Permissions.SecurityAction);summary;df-generated | | System.Security.Permissions;SecurityAttribute;set_Unrestricted;(System.Boolean);summary;df-generated | +| System.Security.Permissions;SecurityPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;SecurityPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;SecurityPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;SecurityPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;SecurityPermission;SecurityPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;SecurityPermission;SecurityPermission;(System.Security.Permissions.SecurityPermissionFlag);summary;df-generated | +| System.Security.Permissions;SecurityPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;SecurityPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;SecurityPermission;get_Flags;();summary;df-generated | +| System.Security.Permissions;SecurityPermission;set_Flags;(System.Security.Permissions.SecurityPermissionFlag);summary;df-generated | | System.Security.Permissions;SecurityPermissionAttribute;CreatePermission;();summary;df-generated | | System.Security.Permissions;SecurityPermissionAttribute;SecurityPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | | System.Security.Permissions;SecurityPermissionAttribute;get_Assertion;();summary;df-generated | @@ -41823,6 +46767,244 @@ neutral | System.Security.Permissions;SecurityPermissionAttribute;set_SerializationFormatter;(System.Boolean);summary;df-generated | | System.Security.Permissions;SecurityPermissionAttribute;set_SkipVerification;(System.Boolean);summary;df-generated | | System.Security.Permissions;SecurityPermissionAttribute;set_UnmanagedCode;(System.Boolean);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;Copy;();summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;SiteIdentityPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;SiteIdentityPermission;(System.String);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;get_Site;();summary;df-generated | +| System.Security.Permissions;SiteIdentityPermission;set_Site;(System.String);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;SiteIdentityPermissionAttribute;SiteIdentityPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;SiteIdentityPermissionAttribute;get_Site;();summary;df-generated | +| System.Security.Permissions;SiteIdentityPermissionAttribute;set_Site;(System.String);summary;df-generated | +| System.Security.Permissions;StorePermission;Copy;();summary;df-generated | +| System.Security.Permissions;StorePermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;StorePermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;StorePermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;StorePermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;StorePermission;StorePermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;StorePermission;StorePermission;(System.Security.Permissions.StorePermissionFlags);summary;df-generated | +| System.Security.Permissions;StorePermission;ToXml;();summary;df-generated | +| System.Security.Permissions;StorePermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;StorePermission;get_Flags;();summary;df-generated | +| System.Security.Permissions;StorePermission;set_Flags;(System.Security.Permissions.StorePermissionFlags);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;StorePermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;get_AddToStore;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;get_CreateStore;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;get_DeleteStore;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;get_EnumerateCertificates;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;get_EnumerateStores;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;get_Flags;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;get_OpenStore;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;get_RemoveFromStore;();summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;set_AddToStore;(System.Boolean);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;set_CreateStore;(System.Boolean);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;set_DeleteStore;(System.Boolean);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;set_EnumerateCertificates;(System.Boolean);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;set_EnumerateStores;(System.Boolean);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;set_Flags;(System.Security.Permissions.StorePermissionFlags);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;set_OpenStore;(System.Boolean);summary;df-generated | +| System.Security.Permissions;StorePermissionAttribute;set_RemoveFromStore;(System.Boolean);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;StrongNameIdentityPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;StrongNameIdentityPermission;(System.Security.Permissions.StrongNamePublicKeyBlob,System.String,System.Version);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;get_Name;();summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;get_PublicKey;();summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;get_Version;();summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;set_Name;(System.String);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;set_PublicKey;(System.Security.Permissions.StrongNamePublicKeyBlob);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;set_Version;(System.Version);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermissionAttribute;StrongNameIdentityPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermissionAttribute;get_Name;();summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermissionAttribute;get_PublicKey;();summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermissionAttribute;get_Version;();summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermissionAttribute;set_Name;(System.String);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermissionAttribute;set_PublicKey;(System.String);summary;df-generated | +| System.Security.Permissions;StrongNameIdentityPermissionAttribute;set_Version;(System.String);summary;df-generated | +| System.Security.Permissions;StrongNamePublicKeyBlob;Equals;(System.Object);summary;df-generated | +| System.Security.Permissions;StrongNamePublicKeyBlob;GetHashCode;();summary;df-generated | +| System.Security.Permissions;StrongNamePublicKeyBlob;StrongNamePublicKeyBlob;(System.Byte[]);summary;df-generated | +| System.Security.Permissions;StrongNamePublicKeyBlob;ToString;();summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;TypeDescriptorPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;TypeDescriptorPermission;(System.Security.Permissions.TypeDescriptorPermissionFlags);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;get_Flags;();summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;set_Flags;(System.Security.Permissions.TypeDescriptorPermissionFlags);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermissionAttribute;TypeDescriptorPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermissionAttribute;get_Flags;();summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermissionAttribute;get_RestrictedRegistrationAccess;();summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermissionAttribute;set_Flags;(System.Security.Permissions.TypeDescriptorPermissionFlags);summary;df-generated | +| System.Security.Permissions;TypeDescriptorPermissionAttribute;set_RestrictedRegistrationAccess;(System.Boolean);summary;df-generated | +| System.Security.Permissions;UIPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;UIPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;UIPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;UIPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;UIPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;UIPermission;UIPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;UIPermission;UIPermission;(System.Security.Permissions.UIPermissionClipboard);summary;df-generated | +| System.Security.Permissions;UIPermission;UIPermission;(System.Security.Permissions.UIPermissionWindow);summary;df-generated | +| System.Security.Permissions;UIPermission;UIPermission;(System.Security.Permissions.UIPermissionWindow,System.Security.Permissions.UIPermissionClipboard);summary;df-generated | +| System.Security.Permissions;UIPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;UIPermission;get_Clipboard;();summary;df-generated | +| System.Security.Permissions;UIPermission;get_Window;();summary;df-generated | +| System.Security.Permissions;UIPermission;set_Clipboard;(System.Security.Permissions.UIPermissionClipboard);summary;df-generated | +| System.Security.Permissions;UIPermission;set_Window;(System.Security.Permissions.UIPermissionWindow);summary;df-generated | +| System.Security.Permissions;UIPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;UIPermissionAttribute;UIPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;UIPermissionAttribute;get_Clipboard;();summary;df-generated | +| System.Security.Permissions;UIPermissionAttribute;get_Window;();summary;df-generated | +| System.Security.Permissions;UIPermissionAttribute;set_Clipboard;(System.Security.Permissions.UIPermissionClipboard);summary;df-generated | +| System.Security.Permissions;UIPermissionAttribute;set_Window;(System.Security.Permissions.UIPermissionWindow);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;Copy;();summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;UrlIdentityPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;UrlIdentityPermission;(System.String);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;get_Url;();summary;df-generated | +| System.Security.Permissions;UrlIdentityPermission;set_Url;(System.String);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;UrlIdentityPermissionAttribute;UrlIdentityPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;UrlIdentityPermissionAttribute;get_Url;();summary;df-generated | +| System.Security.Permissions;UrlIdentityPermissionAttribute;set_Url;(System.String);summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;Copy;();summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;IsUnrestricted;();summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;WebBrowserPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;WebBrowserPermission;(System.Security.Permissions.WebBrowserPermissionLevel);summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;get_Level;();summary;df-generated | +| System.Security.Permissions;WebBrowserPermission;set_Level;(System.Security.Permissions.WebBrowserPermissionLevel);summary;df-generated | +| System.Security.Permissions;WebBrowserPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;WebBrowserPermissionAttribute;WebBrowserPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;WebBrowserPermissionAttribute;get_Level;();summary;df-generated | +| System.Security.Permissions;WebBrowserPermissionAttribute;set_Level;(System.Security.Permissions.WebBrowserPermissionLevel);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;ToXml;();summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;ZoneIdentityPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;ZoneIdentityPermission;(System.Security.SecurityZone);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;get_SecurityZone;();summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;set_SecurityZone;(System.Security.SecurityZone);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermissionAttribute;ZoneIdentityPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermissionAttribute;get_Zone;();summary;df-generated | +| System.Security.Permissions;ZoneIdentityPermissionAttribute;set_Zone;(System.Security.SecurityZone);summary;df-generated | +| System.Security.Policy;AllMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;AllMembershipCondition;Copy;();summary;df-generated | +| System.Security.Policy;AllMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;AllMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;AllMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;AllMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;AllMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;AllMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;AllMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;ApplicationDirectory;ApplicationDirectory;(System.String);summary;df-generated | +| System.Security.Policy;ApplicationDirectory;Copy;();summary;df-generated | +| System.Security.Policy;ApplicationDirectory;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;ApplicationDirectory;GetHashCode;();summary;df-generated | +| System.Security.Policy;ApplicationDirectory;ToString;();summary;df-generated | +| System.Security.Policy;ApplicationDirectory;get_Directory;();summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;Copy;();summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;ApplicationDirectoryMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;ApplicationTrust;ApplicationTrust;(System.ApplicationIdentity);summary;df-generated | +| System.Security.Policy;ApplicationTrust;ApplicationTrust;(System.Security.PermissionSet,System.Collections.Generic.IEnumerable);summary;df-generated | +| System.Security.Policy;ApplicationTrust;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;ApplicationTrust;ToXml;();summary;df-generated | +| System.Security.Policy;ApplicationTrust;get_ApplicationIdentity;();summary;df-generated | +| System.Security.Policy;ApplicationTrust;get_DefaultGrantSet;();summary;df-generated | +| System.Security.Policy;ApplicationTrust;get_ExtraInfo;();summary;df-generated | +| System.Security.Policy;ApplicationTrust;get_FullTrustAssemblies;();summary;df-generated | +| System.Security.Policy;ApplicationTrust;get_IsApplicationTrustedToRun;();summary;df-generated | +| System.Security.Policy;ApplicationTrust;get_Persist;();summary;df-generated | +| System.Security.Policy;ApplicationTrust;set_ApplicationIdentity;(System.ApplicationIdentity);summary;df-generated | +| System.Security.Policy;ApplicationTrust;set_DefaultGrantSet;(System.Security.Policy.PolicyStatement);summary;df-generated | +| System.Security.Policy;ApplicationTrust;set_ExtraInfo;(System.Object);summary;df-generated | +| System.Security.Policy;ApplicationTrust;set_IsApplicationTrustedToRun;(System.Boolean);summary;df-generated | +| System.Security.Policy;ApplicationTrust;set_Persist;(System.Boolean);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;Add;(System.Security.Policy.ApplicationTrust);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;AddRange;(System.Security.Policy.ApplicationTrustCollection);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;AddRange;(System.Security.Policy.ApplicationTrust[]);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;CopyTo;(System.Security.Policy.ApplicationTrust[],System.Int32);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;Find;(System.ApplicationIdentity,System.Security.Policy.ApplicationVersionMatch);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;GetEnumerator;();summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;Remove;(System.ApplicationIdentity,System.Security.Policy.ApplicationVersionMatch);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;Remove;(System.Security.Policy.ApplicationTrust);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;RemoveRange;(System.Security.Policy.ApplicationTrustCollection);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;RemoveRange;(System.Security.Policy.ApplicationTrust[]);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;get_Count;();summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;get_IsSynchronized;();summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;get_Item;(System.Int32);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;get_Item;(System.String);summary;df-generated | +| System.Security.Policy;ApplicationTrustCollection;get_SyncRoot;();summary;df-generated | +| System.Security.Policy;ApplicationTrustEnumerator;MoveNext;();summary;df-generated | +| System.Security.Policy;ApplicationTrustEnumerator;Reset;();summary;df-generated | +| System.Security.Policy;ApplicationTrustEnumerator;get_Current;();summary;df-generated | +| System.Security.Policy;CodeConnectAccess;CodeConnectAccess;(System.String,System.Int32);summary;df-generated | +| System.Security.Policy;CodeConnectAccess;CreateAnySchemeAccess;(System.Int32);summary;df-generated | +| System.Security.Policy;CodeConnectAccess;CreateOriginSchemeAccess;(System.Int32);summary;df-generated | +| System.Security.Policy;CodeConnectAccess;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;CodeConnectAccess;GetHashCode;();summary;df-generated | +| System.Security.Policy;CodeConnectAccess;get_Port;();summary;df-generated | +| System.Security.Policy;CodeConnectAccess;get_Scheme;();summary;df-generated | +| System.Security.Policy;CodeGroup;AddChild;(System.Security.Policy.CodeGroup);summary;df-generated | +| System.Security.Policy;CodeGroup;CodeGroup;(System.Security.Policy.IMembershipCondition,System.Security.Policy.PolicyStatement);summary;df-generated | +| System.Security.Policy;CodeGroup;Copy;();summary;df-generated | +| System.Security.Policy;CodeGroup;CreateXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;CodeGroup;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;CodeGroup;Equals;(System.Security.Policy.CodeGroup,System.Boolean);summary;df-generated | +| System.Security.Policy;CodeGroup;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;CodeGroup;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;CodeGroup;GetHashCode;();summary;df-generated | +| System.Security.Policy;CodeGroup;ParseXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;CodeGroup;RemoveChild;(System.Security.Policy.CodeGroup);summary;df-generated | +| System.Security.Policy;CodeGroup;Resolve;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;CodeGroup;ResolveMatchingCodeGroups;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;CodeGroup;ToXml;();summary;df-generated | +| System.Security.Policy;CodeGroup;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;CodeGroup;get_AttributeString;();summary;df-generated | +| System.Security.Policy;CodeGroup;get_Children;();summary;df-generated | +| System.Security.Policy;CodeGroup;get_Description;();summary;df-generated | +| System.Security.Policy;CodeGroup;get_MembershipCondition;();summary;df-generated | +| System.Security.Policy;CodeGroup;get_MergeLogic;();summary;df-generated | +| System.Security.Policy;CodeGroup;get_Name;();summary;df-generated | +| System.Security.Policy;CodeGroup;get_PermissionSetName;();summary;df-generated | +| System.Security.Policy;CodeGroup;get_PolicyStatement;();summary;df-generated | +| System.Security.Policy;CodeGroup;set_Children;(System.Collections.IList);summary;df-generated | +| System.Security.Policy;CodeGroup;set_Description;(System.String);summary;df-generated | +| System.Security.Policy;CodeGroup;set_MembershipCondition;(System.Security.Policy.IMembershipCondition);summary;df-generated | +| System.Security.Policy;CodeGroup;set_Name;(System.String);summary;df-generated | +| System.Security.Policy;CodeGroup;set_PolicyStatement;(System.Security.Policy.PolicyStatement);summary;df-generated | | System.Security.Policy;Evidence;AddAssembly;(System.Object);summary;df-generated | | System.Security.Policy;Evidence;AddAssemblyEvidence;(T);summary;df-generated | | System.Security.Policy;Evidence;AddHost;(System.Object);summary;df-generated | @@ -41844,6 +47026,243 @@ neutral | System.Security.Policy;Evidence;get_SyncRoot;();summary;df-generated | | System.Security.Policy;Evidence;set_Locked;(System.Boolean);summary;df-generated | | System.Security.Policy;EvidenceBase;Clone;();summary;df-generated | +| System.Security.Policy;FileCodeGroup;Copy;();summary;df-generated | +| System.Security.Policy;FileCodeGroup;CreateXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;FileCodeGroup;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;FileCodeGroup;FileCodeGroup;(System.Security.Policy.IMembershipCondition,System.Security.Permissions.FileIOPermissionAccess);summary;df-generated | +| System.Security.Policy;FileCodeGroup;GetHashCode;();summary;df-generated | +| System.Security.Policy;FileCodeGroup;ParseXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;FileCodeGroup;Resolve;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;FileCodeGroup;ResolveMatchingCodeGroups;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;FileCodeGroup;get_AttributeString;();summary;df-generated | +| System.Security.Policy;FileCodeGroup;get_MergeLogic;();summary;df-generated | +| System.Security.Policy;FileCodeGroup;get_PermissionSetName;();summary;df-generated | +| System.Security.Policy;FirstMatchCodeGroup;Copy;();summary;df-generated | +| System.Security.Policy;FirstMatchCodeGroup;FirstMatchCodeGroup;(System.Security.Policy.IMembershipCondition,System.Security.Policy.PolicyStatement);summary;df-generated | +| System.Security.Policy;FirstMatchCodeGroup;Resolve;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;FirstMatchCodeGroup;ResolveMatchingCodeGroups;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;FirstMatchCodeGroup;get_MergeLogic;();summary;df-generated | +| System.Security.Policy;GacInstalled;Copy;();summary;df-generated | +| System.Security.Policy;GacInstalled;CreateIdentityPermission;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;GacInstalled;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;GacInstalled;GetHashCode;();summary;df-generated | +| System.Security.Policy;GacInstalled;ToString;();summary;df-generated | +| System.Security.Policy;GacMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;GacMembershipCondition;Copy;();summary;df-generated | +| System.Security.Policy;GacMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;GacMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;GacMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;GacMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;GacMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;GacMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;GacMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;Hash;CreateMD5;(System.Byte[]);summary;df-generated | +| System.Security.Policy;Hash;CreateSHA1;(System.Byte[]);summary;df-generated | +| System.Security.Policy;Hash;CreateSHA256;(System.Byte[]);summary;df-generated | +| System.Security.Policy;Hash;GenerateHash;(System.Security.Cryptography.HashAlgorithm);summary;df-generated | +| System.Security.Policy;Hash;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Security.Policy;Hash;Hash;(System.Reflection.Assembly);summary;df-generated | +| System.Security.Policy;Hash;ToString;();summary;df-generated | +| System.Security.Policy;Hash;get_MD5;();summary;df-generated | +| System.Security.Policy;Hash;get_SHA1;();summary;df-generated | +| System.Security.Policy;Hash;get_SHA256;();summary;df-generated | +| System.Security.Policy;HashMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;HashMembershipCondition;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;HashMembershipCondition;(System.Security.Cryptography.HashAlgorithm,System.Byte[]);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;OnDeserialization;(System.Object);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;HashMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;HashMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;get_HashAlgorithm;();summary;df-generated | +| System.Security.Policy;HashMembershipCondition;get_HashValue;();summary;df-generated | +| System.Security.Policy;HashMembershipCondition;set_HashAlgorithm;(System.Security.Cryptography.HashAlgorithm);summary;df-generated | +| System.Security.Policy;HashMembershipCondition;set_HashValue;(System.Byte[]);summary;df-generated | +| System.Security.Policy;IIdentityPermissionFactory;CreateIdentityPermission;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;IMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;IMembershipCondition;Copy;();summary;df-generated | +| System.Security.Policy;IMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;IMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;NetCodeGroup;AddConnectAccess;(System.String,System.Security.Policy.CodeConnectAccess);summary;df-generated | +| System.Security.Policy;NetCodeGroup;Copy;();summary;df-generated | +| System.Security.Policy;NetCodeGroup;CreateXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;NetCodeGroup;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;NetCodeGroup;GetConnectAccessRules;();summary;df-generated | +| System.Security.Policy;NetCodeGroup;GetHashCode;();summary;df-generated | +| System.Security.Policy;NetCodeGroup;NetCodeGroup;(System.Security.Policy.IMembershipCondition);summary;df-generated | +| System.Security.Policy;NetCodeGroup;ParseXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;NetCodeGroup;ResetConnectAccess;();summary;df-generated | +| System.Security.Policy;NetCodeGroup;Resolve;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;NetCodeGroup;ResolveMatchingCodeGroups;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;NetCodeGroup;get_AttributeString;();summary;df-generated | +| System.Security.Policy;NetCodeGroup;get_MergeLogic;();summary;df-generated | +| System.Security.Policy;NetCodeGroup;get_PermissionSetName;();summary;df-generated | +| System.Security.Policy;PermissionRequestEvidence;Copy;();summary;df-generated | +| System.Security.Policy;PermissionRequestEvidence;PermissionRequestEvidence;(System.Security.PermissionSet,System.Security.PermissionSet,System.Security.PermissionSet);summary;df-generated | +| System.Security.Policy;PermissionRequestEvidence;ToString;();summary;df-generated | +| System.Security.Policy;PermissionRequestEvidence;get_DeniedPermissions;();summary;df-generated | +| System.Security.Policy;PermissionRequestEvidence;get_OptionalPermissions;();summary;df-generated | +| System.Security.Policy;PermissionRequestEvidence;get_RequestedPermissions;();summary;df-generated | +| System.Security.Policy;PolicyException;PolicyException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Security.Policy;PolicyException;PolicyException;(System.String);summary;df-generated | +| System.Security.Policy;PolicyException;PolicyException;(System.String,System.Exception);summary;df-generated | +| System.Security.Policy;PolicyLevel;AddFullTrustAssembly;(System.Security.Policy.StrongName);summary;df-generated | +| System.Security.Policy;PolicyLevel;AddFullTrustAssembly;(System.Security.Policy.StrongNameMembershipCondition);summary;df-generated | +| System.Security.Policy;PolicyLevel;AddNamedPermissionSet;(System.Security.NamedPermissionSet);summary;df-generated | +| System.Security.Policy;PolicyLevel;ChangeNamedPermissionSet;(System.String,System.Security.PermissionSet);summary;df-generated | +| System.Security.Policy;PolicyLevel;CreateAppDomainLevel;();summary;df-generated | +| System.Security.Policy;PolicyLevel;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;PolicyLevel;GetNamedPermissionSet;(System.String);summary;df-generated | +| System.Security.Policy;PolicyLevel;Recover;();summary;df-generated | +| System.Security.Policy;PolicyLevel;RemoveFullTrustAssembly;(System.Security.Policy.StrongName);summary;df-generated | +| System.Security.Policy;PolicyLevel;RemoveFullTrustAssembly;(System.Security.Policy.StrongNameMembershipCondition);summary;df-generated | +| System.Security.Policy;PolicyLevel;RemoveNamedPermissionSet;(System.Security.NamedPermissionSet);summary;df-generated | +| System.Security.Policy;PolicyLevel;RemoveNamedPermissionSet;(System.String);summary;df-generated | +| System.Security.Policy;PolicyLevel;Reset;();summary;df-generated | +| System.Security.Policy;PolicyLevel;Resolve;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;PolicyLevel;ResolveMatchingCodeGroups;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;PolicyLevel;ToXml;();summary;df-generated | +| System.Security.Policy;PolicyLevel;get_FullTrustAssemblies;();summary;df-generated | +| System.Security.Policy;PolicyLevel;get_Label;();summary;df-generated | +| System.Security.Policy;PolicyLevel;get_NamedPermissionSets;();summary;df-generated | +| System.Security.Policy;PolicyLevel;get_RootCodeGroup;();summary;df-generated | +| System.Security.Policy;PolicyLevel;get_StoreLocation;();summary;df-generated | +| System.Security.Policy;PolicyLevel;get_Type;();summary;df-generated | +| System.Security.Policy;PolicyLevel;set_RootCodeGroup;(System.Security.Policy.CodeGroup);summary;df-generated | +| System.Security.Policy;PolicyStatement;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;PolicyStatement;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;PolicyStatement;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;PolicyStatement;GetHashCode;();summary;df-generated | +| System.Security.Policy;PolicyStatement;PolicyStatement;(System.Security.PermissionSet);summary;df-generated | +| System.Security.Policy;PolicyStatement;PolicyStatement;(System.Security.PermissionSet,System.Security.Policy.PolicyStatementAttribute);summary;df-generated | +| System.Security.Policy;PolicyStatement;ToXml;();summary;df-generated | +| System.Security.Policy;PolicyStatement;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;PolicyStatement;get_AttributeString;();summary;df-generated | +| System.Security.Policy;PolicyStatement;get_Attributes;();summary;df-generated | +| System.Security.Policy;PolicyStatement;get_PermissionSet;();summary;df-generated | +| System.Security.Policy;PolicyStatement;set_Attributes;(System.Security.Policy.PolicyStatementAttribute);summary;df-generated | +| System.Security.Policy;PolicyStatement;set_PermissionSet;(System.Security.PermissionSet);summary;df-generated | +| System.Security.Policy;Publisher;Copy;();summary;df-generated | +| System.Security.Policy;Publisher;CreateIdentityPermission;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;Publisher;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;Publisher;GetHashCode;();summary;df-generated | +| System.Security.Policy;Publisher;Publisher;(System.Security.Cryptography.X509Certificates.X509Certificate);summary;df-generated | +| System.Security.Policy;Publisher;ToString;();summary;df-generated | +| System.Security.Policy;Publisher;get_Certificate;();summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;PublisherMembershipCondition;(System.Security.Cryptography.X509Certificates.X509Certificate);summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;get_Certificate;();summary;df-generated | +| System.Security.Policy;PublisherMembershipCondition;set_Certificate;(System.Security.Cryptography.X509Certificates.X509Certificate);summary;df-generated | +| System.Security.Policy;Site;Copy;();summary;df-generated | +| System.Security.Policy;Site;CreateFromUrl;(System.String);summary;df-generated | +| System.Security.Policy;Site;CreateIdentityPermission;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;Site;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;Site;GetHashCode;();summary;df-generated | +| System.Security.Policy;Site;Site;(System.String);summary;df-generated | +| System.Security.Policy;Site;ToString;();summary;df-generated | +| System.Security.Policy;Site;get_Name;();summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;Copy;();summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;SiteMembershipCondition;(System.String);summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;get_Site;();summary;df-generated | +| System.Security.Policy;SiteMembershipCondition;set_Site;(System.String);summary;df-generated | +| System.Security.Policy;StrongName;Copy;();summary;df-generated | +| System.Security.Policy;StrongName;CreateIdentityPermission;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;StrongName;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;StrongName;GetHashCode;();summary;df-generated | +| System.Security.Policy;StrongName;StrongName;(System.Security.Permissions.StrongNamePublicKeyBlob,System.String,System.Version);summary;df-generated | +| System.Security.Policy;StrongName;ToString;();summary;df-generated | +| System.Security.Policy;StrongName;get_Name;();summary;df-generated | +| System.Security.Policy;StrongName;get_PublicKey;();summary;df-generated | +| System.Security.Policy;StrongName;get_Version;();summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;StrongNameMembershipCondition;(System.Security.Permissions.StrongNamePublicKeyBlob,System.String,System.Version);summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;get_Name;();summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;get_PublicKey;();summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;get_Version;();summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;set_Name;(System.String);summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;set_PublicKey;(System.Security.Permissions.StrongNamePublicKeyBlob);summary;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;set_Version;(System.Version);summary;df-generated | +| System.Security.Policy;TrustManagerContext;TrustManagerContext;(System.Security.Policy.TrustManagerUIContext);summary;df-generated | +| System.Security.Policy;TrustManagerContext;get_IgnorePersistedDecision;();summary;df-generated | +| System.Security.Policy;TrustManagerContext;get_KeepAlive;();summary;df-generated | +| System.Security.Policy;TrustManagerContext;get_NoPrompt;();summary;df-generated | +| System.Security.Policy;TrustManagerContext;get_Persist;();summary;df-generated | +| System.Security.Policy;TrustManagerContext;get_PreviousApplicationIdentity;();summary;df-generated | +| System.Security.Policy;TrustManagerContext;get_UIContext;();summary;df-generated | +| System.Security.Policy;TrustManagerContext;set_IgnorePersistedDecision;(System.Boolean);summary;df-generated | +| System.Security.Policy;TrustManagerContext;set_KeepAlive;(System.Boolean);summary;df-generated | +| System.Security.Policy;TrustManagerContext;set_NoPrompt;(System.Boolean);summary;df-generated | +| System.Security.Policy;TrustManagerContext;set_Persist;(System.Boolean);summary;df-generated | +| System.Security.Policy;TrustManagerContext;set_PreviousApplicationIdentity;(System.ApplicationIdentity);summary;df-generated | +| System.Security.Policy;TrustManagerContext;set_UIContext;(System.Security.Policy.TrustManagerUIContext);summary;df-generated | +| System.Security.Policy;UnionCodeGroup;Copy;();summary;df-generated | +| System.Security.Policy;UnionCodeGroup;Resolve;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;UnionCodeGroup;ResolveMatchingCodeGroups;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;UnionCodeGroup;UnionCodeGroup;(System.Security.Policy.IMembershipCondition,System.Security.Policy.PolicyStatement);summary;df-generated | +| System.Security.Policy;UnionCodeGroup;get_MergeLogic;();summary;df-generated | +| System.Security.Policy;Url;Copy;();summary;df-generated | +| System.Security.Policy;Url;CreateIdentityPermission;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;Url;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;Url;GetHashCode;();summary;df-generated | +| System.Security.Policy;Url;ToString;();summary;df-generated | +| System.Security.Policy;Url;Url;(System.String);summary;df-generated | +| System.Security.Policy;Url;get_Value;();summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;Copy;();summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;UrlMembershipCondition;(System.String);summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;get_Url;();summary;df-generated | +| System.Security.Policy;UrlMembershipCondition;set_Url;(System.String);summary;df-generated | +| System.Security.Policy;Zone;Copy;();summary;df-generated | +| System.Security.Policy;Zone;CreateFromUrl;(System.String);summary;df-generated | +| System.Security.Policy;Zone;CreateIdentityPermission;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;Zone;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;Zone;GetHashCode;();summary;df-generated | +| System.Security.Policy;Zone;ToString;();summary;df-generated | +| System.Security.Policy;Zone;Zone;(System.Security.SecurityZone);summary;df-generated | +| System.Security.Policy;Zone;get_SecurityZone;();summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;Check;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;Equals;(System.Object);summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;GetHashCode;();summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;ToString;();summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;ToXml;();summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;ZoneMembershipCondition;(System.Security.SecurityZone);summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;get_SecurityZone;();summary;df-generated | +| System.Security.Policy;ZoneMembershipCondition;set_SecurityZone;(System.Security.SecurityZone);summary;df-generated | | System.Security.Principal;GenericIdentity;get_IsAuthenticated;();summary;df-generated | | System.Security.Principal;GenericPrincipal;IsInRole;(System.String);summary;df-generated | | System.Security.Principal;IIdentity;get_AuthenticationType;();summary;df-generated | @@ -41943,6 +47362,41 @@ neutral | System.Security.Principal;WindowsPrincipal;get_UserClaims;();summary;df-generated | | System.Security;AllowPartiallyTrustedCallersAttribute;get_PartialTrustVisibilityLevel;();summary;df-generated | | System.Security;AllowPartiallyTrustedCallersAttribute;set_PartialTrustVisibilityLevel;(System.Security.PartialTrustVisibilityLevel);summary;df-generated | +| System.Security;CodeAccessPermission;Assert;();summary;df-generated | +| System.Security;CodeAccessPermission;Copy;();summary;df-generated | +| System.Security;CodeAccessPermission;Demand;();summary;df-generated | +| System.Security;CodeAccessPermission;Deny;();summary;df-generated | +| System.Security;CodeAccessPermission;Equals;(System.Object);summary;df-generated | +| System.Security;CodeAccessPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security;CodeAccessPermission;GetHashCode;();summary;df-generated | +| System.Security;CodeAccessPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Security;CodeAccessPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Security;CodeAccessPermission;PermitOnly;();summary;df-generated | +| System.Security;CodeAccessPermission;RevertAll;();summary;df-generated | +| System.Security;CodeAccessPermission;RevertAssert;();summary;df-generated | +| System.Security;CodeAccessPermission;RevertDeny;();summary;df-generated | +| System.Security;CodeAccessPermission;RevertPermitOnly;();summary;df-generated | +| System.Security;CodeAccessPermission;ToString;();summary;df-generated | +| System.Security;CodeAccessPermission;ToXml;();summary;df-generated | +| System.Security;CodeAccessPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Security;HostProtectionException;HostProtectionException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System.Security;HostProtectionException;HostProtectionException;(System.String);summary;df-generated | +| System.Security;HostProtectionException;HostProtectionException;(System.String,System.Exception);summary;df-generated | +| System.Security;HostProtectionException;HostProtectionException;(System.String,System.Security.Permissions.HostProtectionResource,System.Security.Permissions.HostProtectionResource);summary;df-generated | +| System.Security;HostProtectionException;ToString;();summary;df-generated | +| System.Security;HostProtectionException;get_DemandedResources;();summary;df-generated | +| System.Security;HostProtectionException;get_ProtectedResources;();summary;df-generated | +| System.Security;HostSecurityManager;DetermineApplicationTrust;(System.Security.Policy.Evidence,System.Security.Policy.Evidence,System.Security.Policy.TrustManagerContext);summary;df-generated | +| System.Security;HostSecurityManager;GenerateAppDomainEvidence;(System.Type);summary;df-generated | +| System.Security;HostSecurityManager;GenerateAssemblyEvidence;(System.Type,System.Reflection.Assembly);summary;df-generated | +| System.Security;HostSecurityManager;GetHostSuppliedAppDomainEvidenceTypes;();summary;df-generated | +| System.Security;HostSecurityManager;GetHostSuppliedAssemblyEvidenceTypes;(System.Reflection.Assembly);summary;df-generated | +| System.Security;HostSecurityManager;ProvideAppDomainEvidence;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security;HostSecurityManager;ProvideAssemblyEvidence;(System.Reflection.Assembly,System.Security.Policy.Evidence);summary;df-generated | +| System.Security;HostSecurityManager;ResolvePolicy;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security;HostSecurityManager;get_DomainPolicy;();summary;df-generated | +| System.Security;HostSecurityManager;get_Flags;();summary;df-generated | +| System.Security;IEvidenceFactory;get_Evidence;();summary;df-generated | | System.Security;IPermission;Copy;();summary;df-generated | | System.Security;IPermission;Demand;();summary;df-generated | | System.Security;IPermission;Intersect;(System.Security.IPermission);summary;df-generated | @@ -41950,10 +47404,26 @@ neutral | System.Security;IPermission;Union;(System.Security.IPermission);summary;df-generated | | System.Security;ISecurityEncodable;FromXml;(System.Security.SecurityElement);summary;df-generated | | System.Security;ISecurityEncodable;ToXml;();summary;df-generated | +| System.Security;ISecurityPolicyEncodable;FromXml;(System.Security.SecurityElement,System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security;ISecurityPolicyEncodable;ToXml;(System.Security.Policy.PolicyLevel);summary;df-generated | | System.Security;IStackWalk;Assert;();summary;df-generated | | System.Security;IStackWalk;Demand;();summary;df-generated | | System.Security;IStackWalk;Deny;();summary;df-generated | | System.Security;IStackWalk;PermitOnly;();summary;df-generated | +| System.Security;NamedPermissionSet;Copy;();summary;df-generated | +| System.Security;NamedPermissionSet;Copy;(System.String);summary;df-generated | +| System.Security;NamedPermissionSet;Equals;(System.Object);summary;df-generated | +| System.Security;NamedPermissionSet;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Security;NamedPermissionSet;GetHashCode;();summary;df-generated | +| System.Security;NamedPermissionSet;NamedPermissionSet;(System.Security.NamedPermissionSet);summary;df-generated | +| System.Security;NamedPermissionSet;NamedPermissionSet;(System.String);summary;df-generated | +| System.Security;NamedPermissionSet;NamedPermissionSet;(System.String,System.Security.PermissionSet);summary;df-generated | +| System.Security;NamedPermissionSet;NamedPermissionSet;(System.String,System.Security.Permissions.PermissionState);summary;df-generated | +| System.Security;NamedPermissionSet;ToXml;();summary;df-generated | +| System.Security;NamedPermissionSet;get_Description;();summary;df-generated | +| System.Security;NamedPermissionSet;get_Name;();summary;df-generated | +| System.Security;NamedPermissionSet;set_Description;(System.String);summary;df-generated | +| System.Security;NamedPermissionSet;set_Name;(System.String);summary;df-generated | | System.Security;PermissionSet;AddPermission;(System.Security.IPermission);summary;df-generated | | System.Security;PermissionSet;AddPermissionImpl;(System.Security.IPermission);summary;df-generated | | System.Security;PermissionSet;Assert;();summary;df-generated | @@ -42002,6 +47472,14 @@ neutral | System.Security;SecureStringMarshal;SecureStringToCoTaskMemUnicode;(System.Security.SecureString);summary;df-generated | | System.Security;SecureStringMarshal;SecureStringToGlobalAllocAnsi;(System.Security.SecureString);summary;df-generated | | System.Security;SecureStringMarshal;SecureStringToGlobalAllocUnicode;(System.Security.SecureString);summary;df-generated | +| System.Security;SecurityContext;Capture;();summary;df-generated | +| System.Security;SecurityContext;CreateCopy;();summary;df-generated | +| System.Security;SecurityContext;Dispose;();summary;df-generated | +| System.Security;SecurityContext;IsFlowSuppressed;();summary;df-generated | +| System.Security;SecurityContext;IsWindowsIdentityFlowSuppressed;();summary;df-generated | +| System.Security;SecurityContext;RestoreFlow;();summary;df-generated | +| System.Security;SecurityContext;SuppressFlow;();summary;df-generated | +| System.Security;SecurityContext;SuppressFlowWindowsIdentity;();summary;df-generated | | System.Security;SecurityCriticalAttribute;SecurityCriticalAttribute;(System.Security.SecurityCriticalScope);summary;df-generated | | System.Security;SecurityCriticalAttribute;get_Scope;();summary;df-generated | | System.Security;SecurityElement;Equal;(System.Security.SecurityElement);summary;df-generated | @@ -42038,13 +47516,67 @@ neutral | System.Security;SecurityException;set_PermitOnlySetInstance;(System.Object);summary;df-generated | | System.Security;SecurityException;set_RefusedSet;(System.String);summary;df-generated | | System.Security;SecurityException;set_Url;(System.String);summary;df-generated | +| System.Security;SecurityManager;CurrentThreadRequiresSecurityContextCapture;();summary;df-generated | +| System.Security;SecurityManager;GetStandardSandbox;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security;SecurityManager;GetZoneAndOrigin;(System.Collections.ArrayList,System.Collections.ArrayList);summary;df-generated | +| System.Security;SecurityManager;IsGranted;(System.Security.IPermission);summary;df-generated | +| System.Security;SecurityManager;LoadPolicyLevelFromFile;(System.String,System.Security.PolicyLevelType);summary;df-generated | +| System.Security;SecurityManager;LoadPolicyLevelFromString;(System.String,System.Security.PolicyLevelType);summary;df-generated | +| System.Security;SecurityManager;PolicyHierarchy;();summary;df-generated | +| System.Security;SecurityManager;ResolvePolicy;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security;SecurityManager;ResolvePolicy;(System.Security.Policy.Evidence,System.Security.PermissionSet,System.Security.PermissionSet,System.Security.PermissionSet,System.Security.PermissionSet);summary;df-generated | +| System.Security;SecurityManager;ResolvePolicy;(System.Security.Policy.Evidence[]);summary;df-generated | +| System.Security;SecurityManager;ResolvePolicyGroups;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security;SecurityManager;ResolveSystemPolicy;(System.Security.Policy.Evidence);summary;df-generated | +| System.Security;SecurityManager;SavePolicy;();summary;df-generated | +| System.Security;SecurityManager;SavePolicyLevel;(System.Security.Policy.PolicyLevel);summary;df-generated | +| System.Security;SecurityManager;get_CheckExecutionRights;();summary;df-generated | +| System.Security;SecurityManager;get_SecurityEnabled;();summary;df-generated | +| System.Security;SecurityManager;set_CheckExecutionRights;(System.Boolean);summary;df-generated | +| System.Security;SecurityManager;set_SecurityEnabled;(System.Boolean);summary;df-generated | | System.Security;SecurityRulesAttribute;SecurityRulesAttribute;(System.Security.SecurityRuleSet);summary;df-generated | | System.Security;SecurityRulesAttribute;get_RuleSet;();summary;df-generated | | System.Security;SecurityRulesAttribute;get_SkipVerificationInFullTrust;();summary;df-generated | | System.Security;SecurityRulesAttribute;set_SkipVerificationInFullTrust;(System.Boolean);summary;df-generated | +| System.Security;SecurityState;EnsureState;();summary;df-generated | +| System.Security;SecurityState;IsStateAvailable;();summary;df-generated | | System.Security;VerificationException;VerificationException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | | System.Security;VerificationException;VerificationException;(System.String);summary;df-generated | | System.Security;VerificationException;VerificationException;(System.String,System.Exception);summary;df-generated | +| System.Security;XmlSyntaxException;XmlSyntaxException;(System.Int32);summary;df-generated | +| System.Security;XmlSyntaxException;XmlSyntaxException;(System.Int32,System.String);summary;df-generated | +| System.Security;XmlSyntaxException;XmlSyntaxException;(System.String);summary;df-generated | +| System.Security;XmlSyntaxException;XmlSyntaxException;(System.String,System.Exception);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermission;ServiceControllerPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermission;ServiceControllerPermission;(System.ServiceProcess.ServiceControllerPermissionAccess,System.String,System.String);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermission;ServiceControllerPermission;(System.ServiceProcess.ServiceControllerPermissionEntry[]);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermission;get_PermissionEntries;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionAttribute;CreatePermission;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionAttribute;ServiceControllerPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionAttribute;get_MachineName;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionAttribute;get_PermissionAccess;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionAttribute;get_ServiceName;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionAttribute;set_MachineName;(System.String);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionAttribute;set_PermissionAccess;(System.ServiceProcess.ServiceControllerPermissionAccess);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionAttribute;set_ServiceName;(System.String);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntry;ServiceControllerPermissionEntry;(System.ServiceProcess.ServiceControllerPermissionAccess,System.String,System.String);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntry;get_MachineName;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntry;get_PermissionAccess;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntry;get_ServiceName;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;Add;(System.ServiceProcess.ServiceControllerPermissionEntry);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;AddRange;(System.ServiceProcess.ServiceControllerPermissionEntryCollection);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;AddRange;(System.ServiceProcess.ServiceControllerPermissionEntry[]);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;Contains;(System.ServiceProcess.ServiceControllerPermissionEntry);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;CopyTo;(System.ServiceProcess.ServiceControllerPermissionEntry[],System.Int32);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;IndexOf;(System.ServiceProcess.ServiceControllerPermissionEntry);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;Insert;(System.Int32,System.ServiceProcess.ServiceControllerPermissionEntry);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;OnClear;();summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;OnInsert;(System.Int32,System.Object);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;OnRemove;(System.Int32,System.Object);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;OnSet;(System.Int32,System.Object,System.Object);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;Remove;(System.ServiceProcess.ServiceControllerPermissionEntry);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;get_Item;(System.Int32);summary;df-generated | +| System.ServiceProcess;ServiceControllerPermissionEntryCollection;set_Item;(System.Int32,System.ServiceProcess.ServiceControllerPermissionEntry);summary;df-generated | | System.Text.Encodings.Web;HtmlEncoder;Create;(System.Text.Encodings.Web.TextEncoderSettings);summary;df-generated | | System.Text.Encodings.Web;HtmlEncoder;Create;(System.Text.Unicode.UnicodeRange[]);summary;df-generated | | System.Text.Encodings.Web;HtmlEncoder;get_Default;();summary;df-generated | @@ -44261,6 +49793,18 @@ neutral | System.Transactions;CommittableTransaction;get_CompletedSynchronously;();summary;df-generated | | System.Transactions;CommittableTransaction;get_IsCompleted;();summary;df-generated | | System.Transactions;DependentTransaction;Complete;();summary;df-generated | +| System.Transactions;DistributedTransactionPermission;Copy;();summary;df-generated | +| System.Transactions;DistributedTransactionPermission;DistributedTransactionPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Transactions;DistributedTransactionPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Transactions;DistributedTransactionPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Transactions;DistributedTransactionPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Transactions;DistributedTransactionPermission;IsUnrestricted;();summary;df-generated | +| System.Transactions;DistributedTransactionPermission;ToXml;();summary;df-generated | +| System.Transactions;DistributedTransactionPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Transactions;DistributedTransactionPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Transactions;DistributedTransactionPermissionAttribute;DistributedTransactionPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Transactions;DistributedTransactionPermissionAttribute;get_Unrestricted;();summary;df-generated | +| System.Transactions;DistributedTransactionPermissionAttribute;set_Unrestricted;(System.Boolean);summary;df-generated | | System.Transactions;Enlistment;Done;();summary;df-generated | | System.Transactions;IDtcTransaction;Abort;(System.IntPtr,System.Int32,System.Int32);summary;df-generated | | System.Transactions;IDtcTransaction;Commit;(System.Int32,System.Int32,System.Int32);summary;df-generated | @@ -44351,6 +49895,21 @@ neutral | System.Transactions;TransactionScope;TransactionScope;(System.Transactions.TransactionScopeOption,System.Transactions.TransactionOptions,System.Transactions.EnterpriseServicesInteropOption);summary;df-generated | | System.Transactions;TransactionScope;TransactionScope;(System.Transactions.TransactionScopeOption,System.Transactions.TransactionOptions,System.Transactions.TransactionScopeAsyncFlowOption);summary;df-generated | | System.Transactions;TransactionScope;TransactionScope;(System.Transactions.TransactionScopeOption,System.Transactions.TransactionScopeAsyncFlowOption);summary;df-generated | +| System.Web;AspNetHostingPermission;AspNetHostingPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Web;AspNetHostingPermission;AspNetHostingPermission;(System.Web.AspNetHostingPermissionLevel);summary;df-generated | +| System.Web;AspNetHostingPermission;Copy;();summary;df-generated | +| System.Web;AspNetHostingPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Web;AspNetHostingPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Web;AspNetHostingPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Web;AspNetHostingPermission;IsUnrestricted;();summary;df-generated | +| System.Web;AspNetHostingPermission;ToXml;();summary;df-generated | +| System.Web;AspNetHostingPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Web;AspNetHostingPermission;get_Level;();summary;df-generated | +| System.Web;AspNetHostingPermission;set_Level;(System.Web.AspNetHostingPermissionLevel);summary;df-generated | +| System.Web;AspNetHostingPermissionAttribute;AspNetHostingPermissionAttribute;(System.Security.Permissions.SecurityAction);summary;df-generated | +| System.Web;AspNetHostingPermissionAttribute;CreatePermission;();summary;df-generated | +| System.Web;AspNetHostingPermissionAttribute;get_Level;();summary;df-generated | +| System.Web;AspNetHostingPermissionAttribute;set_Level;(System.Web.AspNetHostingPermissionLevel);summary;df-generated | | System.Web;HttpUtility;ParseQueryString;(System.String);summary;df-generated | | System.Web;HttpUtility;ParseQueryString;(System.String,System.Text.Encoding);summary;df-generated | | System.Web;HttpUtility;UrlDecode;(System.Byte[],System.Int32,System.Int32,System.Text.Encoding);summary;df-generated | @@ -44365,6 +49924,26 @@ neutral | System.Web;HttpUtility;UrlEncodeUnicodeToBytes;(System.String);summary;df-generated | | System.Windows.Input;ICommand;CanExecute;(System.Object);summary;df-generated | | System.Windows.Input;ICommand;Execute;(System.Object);summary;df-generated | +| System.Xaml.Permissions;XamlAccessLevel;AssemblyAccessTo;(System.Reflection.Assembly);summary;df-generated | +| System.Xaml.Permissions;XamlAccessLevel;AssemblyAccessTo;(System.Reflection.AssemblyName);summary;df-generated | +| System.Xaml.Permissions;XamlAccessLevel;PrivateAccessTo;(System.String);summary;df-generated | +| System.Xaml.Permissions;XamlAccessLevel;PrivateAccessTo;(System.Type);summary;df-generated | +| System.Xaml.Permissions;XamlAccessLevel;get_AssemblyAccessToAssemblyName;();summary;df-generated | +| System.Xaml.Permissions;XamlAccessLevel;get_PrivateAccessToTypeName;();summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;Copy;();summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;Equals;(System.Object);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;FromXml;(System.Security.SecurityElement);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;GetHashCode;();summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;Includes;(System.Xaml.Permissions.XamlAccessLevel);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;Intersect;(System.Security.IPermission);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;IsSubsetOf;(System.Security.IPermission);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;IsUnrestricted;();summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;ToXml;();summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;Union;(System.Security.IPermission);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;XamlLoadPermission;(System.Collections.Generic.IEnumerable);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;XamlLoadPermission;(System.Security.Permissions.PermissionState);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;XamlLoadPermission;(System.Xaml.Permissions.XamlAccessLevel);summary;df-generated | +| System.Xaml.Permissions;XamlLoadPermission;get_AllowedAccess;();summary;df-generated | | System.Xml.Linq;Extensions;Remove;(System.Collections.Generic.IEnumerable);summary;df-generated | | System.Xml.Linq;Extensions;Remove;(System.Collections.Generic.IEnumerable);summary;df-generated | | System.Xml.Linq;XAttribute;Remove;();summary;df-generated | @@ -46029,6 +51608,11 @@ neutral | System;ApplicationId;get_Name;();summary;df-generated | | System;ApplicationId;get_ProcessorArchitecture;();summary;df-generated | | System;ApplicationId;get_Version;();summary;df-generated | +| System;ApplicationIdentity;ApplicationIdentity;(System.String);summary;df-generated | +| System;ApplicationIdentity;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);summary;df-generated | +| System;ApplicationIdentity;ToString;();summary;df-generated | +| System;ApplicationIdentity;get_CodeBase;();summary;df-generated | +| System;ApplicationIdentity;get_FullName;();summary;df-generated | | System;ArgIterator;ArgIterator;(System.RuntimeArgumentHandle);summary;df-generated | | System;ArgIterator;ArgIterator;(System.RuntimeArgumentHandle,System.Void*);summary;df-generated | | System;ArgIterator;End;();summary;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 8ba293dc085..4790199738d 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -673,6 +673,11 @@ summary | Microsoft.CSharp.RuntimeBinder;Binder;false;SetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;df-generated | | Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;df-generated | | Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;CSharpCodeProvider;(System.Collections.Generic.IDictionary);;Argument[0].Element;Argument[this];taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;CreateCompiler;();;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;CreateGenerator;();;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| Microsoft.CSharp;CSharpCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | | Microsoft.EntityFrameworkCore;DbSet;false;Add;(TEntity);;Argument[0];Argument[this].Element;value;manual | | Microsoft.EntityFrameworkCore;DbSet;false;AddAsync;(TEntity,System.Threading.CancellationToken);;Argument[0];Argument[this].Element;value;manual | | Microsoft.EntityFrameworkCore;DbSet;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].WithElement;Argument[this];value;manual | @@ -1418,10 +1423,50 @@ summary | Microsoft.VisualBasic;Collection;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Argument[this].Element;ReturnValue;value;manual | | Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Argument[this].Element;ReturnValue;value;manual | +| Microsoft.VisualBasic;VBCodeProvider;false;CreateCompiler;();;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;false;CreateGenerator;();;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| Microsoft.VisualBasic;VBCodeProvider;false;VBCodeProvider;(System.Collections.Generic.IDictionary);;Argument[0].Element;Argument[this];taint;df-generated | | Microsoft.Win32.SafeHandles;SafeFileHandle;false;SafeFileHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | Microsoft.Win32.SafeHandles;SafePipeHandle;false;SafePipeHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | Microsoft.Win32.SafeHandles;SafeProcessHandle;false;SafeProcessHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | Microsoft.Win32.SafeHandles;SafeWaitHandle;false;SafeWaitHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| Microsoft.Win32;PowerModeChangedEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.PowerModeChangedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SessionEndedEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.SessionEndedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SessionEndingEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.SessionEndingEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SessionSwitchEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.SessionSwitchEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_DisplaySettingsChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_DisplaySettingsChanging;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_EventsThreadShutdown;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_InstalledFontsChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_LowMemory;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_PaletteChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_PowerModeChanged;(Microsoft.Win32.PowerModeChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_SessionEnded;(Microsoft.Win32.SessionEndedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_SessionEnding;(Microsoft.Win32.SessionEndingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_SessionSwitch;(Microsoft.Win32.SessionSwitchEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_TimeChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_TimerElapsed;(Microsoft.Win32.TimerElapsedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_UserPreferenceChanged;(Microsoft.Win32.UserPreferenceChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;add_UserPreferenceChanging;(Microsoft.Win32.UserPreferenceChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_DisplaySettingsChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_DisplaySettingsChanging;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_EventsThreadShutdown;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_InstalledFontsChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_LowMemory;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_PaletteChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_PowerModeChanged;(Microsoft.Win32.PowerModeChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_SessionEnded;(Microsoft.Win32.SessionEndedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_SessionEnding;(Microsoft.Win32.SessionEndingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_SessionSwitch;(Microsoft.Win32.SessionSwitchEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_TimeChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_TimerElapsed;(Microsoft.Win32.TimerElapsedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_UserPreferenceChanged;(Microsoft.Win32.UserPreferenceChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;SystemEvents;false;remove_UserPreferenceChanging;(Microsoft.Win32.UserPreferenceChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;TimerElapsedEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.TimerElapsedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;UserPreferenceChangedEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.UserPreferenceChangedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| Microsoft.Win32;UserPreferenceChangingEventHandler;false;BeginInvoke;(System.Object,Microsoft.Win32.UserPreferenceChangingEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Object);;Argument[this].Element;ReturnValue;value;manual | | Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[this].Element;value;manual | | Newtonsoft.Json.Linq;JConstructor;false;get_Item;(System.Object);;Argument[this].Element;ReturnValue;value;manual | @@ -3521,6 +3566,72 @@ summary | System.Buffers;SequenceReader;false;get_Position;();;Argument[this];ReturnValue;taint;df-generated | | System.Buffers;SequenceReader;false;get_UnreadSequence;();;Argument[this];ReturnValue;taint;df-generated | | System.Buffers;SpanAction;false;BeginInvoke;(System.Span,TArg,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.CodeDom.Compiler;CodeCompiler;false;JoinStringArray;(System.String[],System.String);;Argument[0].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeCompiler;false;JoinStringArray;(System.String[],System.String);;Argument[1];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;CreateEscapedIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;CreateGenerator;(System.IO.TextWriter);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;CreateGenerator;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;CreateValidIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromCompileUnit;(System.CodeDom.CodeCompileUnit,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromExpression;(System.CodeDom.CodeExpression,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromStatement;(System.CodeDom.CodeStatement,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeDomProvider;true;GetTypeOutput;(System.CodeDom.CodeTypeReference);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;CreateEscapedIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;CreateValidIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromCompileUnit;(System.CodeDom.CodeCompileUnit,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromExpression;(System.CodeDom.CodeExpression,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromStatement;(System.CodeDom.CodeStatement,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GenerateTypes;(System.CodeDom.CodeNamespace);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;GetTypeOutput;(System.CodeDom.CodeTypeReference);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_CurrentClass;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_CurrentMember;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_CurrentMemberName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_CurrentTypeName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_Options;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;false;get_Output;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;CreateEscapedIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;CreateValidIdentifier;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;GenerateNamespace;(System.CodeDom.CodeNamespace);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CodeGenerator;true;GetTypeOutput;(System.CodeDom.CodeTypeReference);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;false;get_BracingStyle;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;false;get_IndentString;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CodeGeneratorOptions;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;Add;(System.CodeDom.Compiler.CompilerError);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;AddRange;(System.CodeDom.Compiler.CompilerErrorCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;AddRange;(System.CodeDom.Compiler.CompilerError[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;CompilerErrorCollection;(System.CodeDom.Compiler.CompilerErrorCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;CompilerErrorCollection;(System.CodeDom.Compiler.CompilerError[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;CopyTo;(System.CodeDom.Compiler.CompilerError[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;Insert;(System.Int32,System.CodeDom.Compiler.CompilerError);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;Remove;(System.CodeDom.Compiler.CompilerError);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerErrorCollection;false;set_Item;(System.Int32,System.CodeDom.Compiler.CompilerError);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerInfo;false;GetExtensions;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerInfo;false;GetLanguages;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerInfo;false;get_CodeDomProviderType;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerParameters;false;set_TempFiles;(System.CodeDom.Compiler.TempFileCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom.Compiler;CompilerResults;false;get_CompiledAssembly;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;CompilerResults;false;set_CompiledAssembly;(System.Reflection.Assembly);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[4];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[1].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2].Element;ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[4];ReturnValue;taint;df-generated | | System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | | System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | | System.CodeDom.Compiler;GeneratedCodeAttribute;false;get_Tool;();;Argument[this];ReturnValue;taint;df-generated | @@ -3531,6 +3642,347 @@ summary | System.CodeDom.Compiler;IndentedTextWriter;false;WriteLineNoTabsAsync;(System.String);;Argument[this];ReturnValue;taint;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;false;get_Encoding;();;Argument[this];ReturnValue;taint;df-generated | | System.CodeDom.Compiler;IndentedTextWriter;false;get_InnerWriter;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String,System.Boolean);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;TempFileCollection;(System.String,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;get_BasePath;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom.Compiler;TempFileCollection;false;get_TempDir;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeArgumentReferenceExpression;false;CodeArgumentReferenceExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArgumentReferenceExpression;false;get_ParameterName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeArgumentReferenceExpression;false;set_ParameterName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;get_Initializers;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeArrayCreateExpression;false;set_CreateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttachEventStatement;false;CodeAttachEventStatement;(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttachEventStatement;false;set_Event;(System.CodeDom.CodeEventReferenceExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgument;false;CodeAttributeArgument;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgument;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeArgument;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;Add;(System.CodeDom.CodeAttributeArgument);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;AddRange;(System.CodeDom.CodeAttributeArgumentCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;AddRange;(System.CodeDom.CodeAttributeArgument[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;CodeAttributeArgumentCollection;(System.CodeDom.CodeAttributeArgumentCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;CodeAttributeArgumentCollection;(System.CodeDom.CodeAttributeArgument[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;CopyTo;(System.CodeDom.CodeAttributeArgument[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;Insert;(System.Int32,System.CodeDom.CodeAttributeArgument);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;Remove;(System.CodeDom.CodeAttributeArgument);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeArgumentCollection;false;set_Item;(System.Int32,System.CodeDom.CodeAttributeArgument);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeAttributeArgument[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeAttributeArgument[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String,System.CodeDom.CodeAttributeArgument[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String,System.CodeDom.CodeAttributeArgument[]);;Argument[1].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;get_Arguments;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;get_AttributeType;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeDeclaration;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;Add;(System.CodeDom.CodeAttributeDeclaration);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;AddRange;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;AddRange;(System.CodeDom.CodeAttributeDeclaration[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;CodeAttributeDeclarationCollection;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;CodeAttributeDeclarationCollection;(System.CodeDom.CodeAttributeDeclaration[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;CopyTo;(System.CodeDom.CodeAttributeDeclaration[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;Insert;(System.Int32,System.CodeDom.CodeAttributeDeclaration);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;Remove;(System.CodeDom.CodeAttributeDeclaration);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeAttributeDeclarationCollection;false;set_Item;(System.Int32,System.CodeDom.CodeAttributeDeclaration);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.Type,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCastExpression;false;set_TargetType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference,System.CodeDom.CodeStatement[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference,System.CodeDom.CodeStatement[]);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;get_LocalName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeCatchClause;false;set_CatchExceptionType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClause;false;set_LocalName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;Add;(System.CodeDom.CodeCatchClause);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;AddRange;(System.CodeDom.CodeCatchClauseCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;AddRange;(System.CodeDom.CodeCatchClause[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;CodeCatchClauseCollection;(System.CodeDom.CodeCatchClauseCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;CodeCatchClauseCollection;(System.CodeDom.CodeCatchClause[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;CopyTo;(System.CodeDom.CodeCatchClause[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;Insert;(System.Int32,System.CodeDom.CodeCatchClause);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;Remove;(System.CodeDom.CodeCatchClause);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeCatchClauseCollection;false;set_Item;(System.Int32,System.CodeDom.CodeCatchClause);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeChecksumPragma;false;CodeChecksumPragma;(System.String,System.Guid,System.Byte[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeChecksumPragma;false;get_FileName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeChecksumPragma;false;set_FileName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeComment;false;CodeComment;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeComment;false;CodeComment;(System.String,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeComment;false;get_Text;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeComment;false;set_Text;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;Add;(System.CodeDom.CodeCommentStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;AddRange;(System.CodeDom.CodeCommentStatementCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;AddRange;(System.CodeDom.CodeCommentStatement[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;CodeCommentStatementCollection;(System.CodeDom.CodeCommentStatementCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;CodeCommentStatementCollection;(System.CodeDom.CodeCommentStatement[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;CopyTo;(System.CodeDom.CodeCommentStatement[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;Insert;(System.Int32,System.CodeDom.CodeCommentStatement);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;Remove;(System.CodeDom.CodeCommentStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeCommentStatementCollection;false;set_Item;(System.Int32,System.CodeDom.CodeCommentStatement);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeDefaultValueExpression;false;CodeDefaultValueExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDefaultValueExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;CodeDelegateCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;CodeDelegateCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression,System.String);;Argument[2];Argument[this];taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;get_MethodName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;set_DelegateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDelegateCreateExpression;false;set_MethodName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;Add;(System.CodeDom.CodeDirective);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;AddRange;(System.CodeDom.CodeDirectiveCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;AddRange;(System.CodeDom.CodeDirective[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;CodeDirectiveCollection;(System.CodeDom.CodeDirectiveCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;CodeDirectiveCollection;(System.CodeDom.CodeDirective[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;CopyTo;(System.CodeDom.CodeDirective[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;Insert;(System.Int32,System.CodeDom.CodeDirective);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;Remove;(System.CodeDom.CodeDirective);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeDirectiveCollection;false;set_Item;(System.Int32,System.CodeDom.CodeDirective);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeEventReferenceExpression;false;CodeEventReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeEventReferenceExpression;false;get_EventName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeEventReferenceExpression;false;set_EventName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;Add;(System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;AddRange;(System.CodeDom.CodeExpressionCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;AddRange;(System.CodeDom.CodeExpression[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;CodeExpressionCollection;(System.CodeDom.CodeExpressionCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;CodeExpressionCollection;(System.CodeDom.CodeExpression[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;CopyTo;(System.CodeDom.CodeExpression[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;Insert;(System.Int32,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;Remove;(System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeExpressionCollection;false;set_Item;(System.Int32,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeFieldReferenceExpression;false;CodeFieldReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeFieldReferenceExpression;false;get_FieldName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeFieldReferenceExpression;false;set_FieldName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeGotoStatement;false;CodeGotoStatement;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeGotoStatement;false;get_Label;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeGotoStatement;false;set_Label;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLabeledStatement;false;CodeLabeledStatement;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLabeledStatement;false;CodeLabeledStatement;(System.String,System.CodeDom.CodeStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLabeledStatement;false;get_Label;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeLabeledStatement;false;set_Label;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLinePragma;false;CodeLinePragma;(System.String,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeLinePragma;false;get_FileName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeLinePragma;false;set_FileName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberEvent;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.Type,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;CodeMemberField;(System.Type,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberField;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberMethod;false;add_PopulateImplementationTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;add_PopulateParameters;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;add_PopulateStatements;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;get_ImplementationTypes;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeMemberMethod;false;get_Parameters;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeMemberMethod;false;get_Statements;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeMemberMethod;false;remove_PopulateImplementationTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;remove_PopulateParameters;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;remove_PopulateStatements;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeMemberMethod;false;set_ReturnType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMemberProperty;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodInvokeExpression;false;CodeMethodInvokeExpression;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeExpression[]);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodInvokeExpression;false;CodeMethodInvokeExpression;(System.CodeDom.CodeMethodReferenceExpression,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodInvokeExpression;false;set_Method;(System.CodeDom.CodeMethodReferenceExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;false;CodeMethodReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;false;CodeMethodReferenceExpression;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeTypeReference[]);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;false;get_MethodName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeMethodReferenceExpression;false;set_MethodName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespace;false;CodeNamespace;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespace;false;add_PopulateComments;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;add_PopulateImports;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;add_PopulateTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;get_Comments;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespace;false;get_Imports;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespace;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespace;false;get_Types;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespace;false;remove_PopulateComments;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;remove_PopulateImports;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;remove_PopulateTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeNamespace;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;Add;(System.CodeDom.CodeNamespace);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;AddRange;(System.CodeDom.CodeNamespaceCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;AddRange;(System.CodeDom.CodeNamespace[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;CodeNamespaceCollection;(System.CodeDom.CodeNamespaceCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;CodeNamespaceCollection;(System.CodeDom.CodeNamespace[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;CopyTo;(System.CodeDom.CodeNamespace[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;Insert;(System.Int32,System.CodeDom.CodeNamespace);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;Remove;(System.CodeDom.CodeNamespace);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespaceCollection;false;set_Item;(System.Int32,System.CodeDom.CodeNamespace);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImport;false;CodeNamespaceImport;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImport;false;get_Namespace;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespaceImport;false;set_Namespace;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;Add;(System.CodeDom.CodeNamespaceImport);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;AddRange;(System.CodeDom.CodeNamespaceImport[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.CodeDom;CodeNamespaceImportCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeNamespaceImportCollection;false;set_Item;(System.Int32,System.CodeDom.CodeNamespaceImport);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeObjectCreateExpression;false;set_CreateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.Type,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.Type,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;set_CustomAttributes;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Add;(System.CodeDom.CodeParameterDeclarationExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;AddRange;(System.CodeDom.CodeParameterDeclarationExpressionCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;AddRange;(System.CodeDom.CodeParameterDeclarationExpression[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CodeParameterDeclarationExpressionCollection;(System.CodeDom.CodeParameterDeclarationExpressionCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CodeParameterDeclarationExpressionCollection;(System.CodeDom.CodeParameterDeclarationExpression[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CopyTo;(System.CodeDom.CodeParameterDeclarationExpression[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Insert;(System.Int32,System.CodeDom.CodeParameterDeclarationExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Remove;(System.CodeDom.CodeParameterDeclarationExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeParameterDeclarationExpressionCollection;false;set_Item;(System.Int32,System.CodeDom.CodeParameterDeclarationExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodePropertyReferenceExpression;false;CodePropertyReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodePropertyReferenceExpression;false;get_PropertyName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodePropertyReferenceExpression;false;set_PropertyName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeRegionDirective;false;CodeRegionDirective;(System.CodeDom.CodeRegionMode,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeRegionDirective;false;get_RegionText;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeRegionDirective;false;set_RegionText;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeRemoveEventStatement;false;CodeRemoveEventStatement;(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeRemoveEventStatement;false;CodeRemoveEventStatement;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeRemoveEventStatement;false;set_Event;(System.CodeDom.CodeEventReferenceExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetCompileUnit;false;CodeSnippetCompileUnit;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetCompileUnit;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeSnippetCompileUnit;false;set_Value;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetExpression;false;CodeSnippetExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetExpression;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeSnippetExpression;false;set_Value;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetStatement;false;CodeSnippetStatement;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetStatement;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeSnippetStatement;false;set_Value;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetTypeMember;false;CodeSnippetTypeMember;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeSnippetTypeMember;false;get_Text;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeSnippetTypeMember;false;set_Text;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;Add;(System.CodeDom.CodeStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;AddRange;(System.CodeDom.CodeStatementCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;AddRange;(System.CodeDom.CodeStatement[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;CodeStatementCollection;(System.CodeDom.CodeStatementCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;CodeStatementCollection;(System.CodeDom.CodeStatement[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;CopyTo;(System.CodeDom.CodeStatement[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;Insert;(System.Int32,System.CodeDom.CodeStatement);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;Remove;(System.CodeDom.CodeStatement);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeStatementCollection;false;set_Item;(System.Int32,System.CodeDom.CodeStatement);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclaration;false;CodeTypeDeclaration;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclaration;false;add_PopulateBaseTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeTypeDeclaration;false;add_PopulateMembers;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeTypeDeclaration;false;get_BaseTypes;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeDeclaration;false;get_Members;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeDeclaration;false;remove_PopulateBaseTypes;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeTypeDeclaration;false;remove_PopulateMembers;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;Add;(System.CodeDom.CodeTypeDeclaration);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;AddRange;(System.CodeDom.CodeTypeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;AddRange;(System.CodeDom.CodeTypeDeclaration[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;CodeTypeDeclarationCollection;(System.CodeDom.CodeTypeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;CodeTypeDeclarationCollection;(System.CodeDom.CodeTypeDeclaration[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;CopyTo;(System.CodeDom.CodeTypeDeclaration[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeDeclaration);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;Remove;(System.CodeDom.CodeTypeDeclaration);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeDeclarationCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeDeclaration);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDelegate;false;CodeTypeDelegate;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeDelegate;false;set_ReturnType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMember;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeMember;false;set_CustomAttributes;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMember;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;Add;(System.CodeDom.CodeTypeMember);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;AddRange;(System.CodeDom.CodeTypeMemberCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;AddRange;(System.CodeDom.CodeTypeMember[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;CodeTypeMemberCollection;(System.CodeDom.CodeTypeMemberCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;CodeTypeMemberCollection;(System.CodeDom.CodeTypeMember[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;CopyTo;(System.CodeDom.CodeTypeMember[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeMember);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;Remove;(System.CodeDom.CodeTypeMember);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeMemberCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeMember);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeOfExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameter;false;CodeTypeParameter;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameter;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeParameter;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;Add;(System.CodeDom.CodeTypeParameter);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;AddRange;(System.CodeDom.CodeTypeParameterCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;AddRange;(System.CodeDom.CodeTypeParameter[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;CodeTypeParameterCollection;(System.CodeDom.CodeTypeParameterCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;CodeTypeParameterCollection;(System.CodeDom.CodeTypeParameter[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;CopyTo;(System.CodeDom.CodeTypeParameter[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeParameter);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;Remove;(System.CodeDom.CodeTypeParameter);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeParameterCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeParameter);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.String,System.CodeDom.CodeTypeReferenceOptions);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReference;false;get_BaseType;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeReference;false;set_BaseType;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;AddRange;(System.CodeDom.CodeTypeReferenceCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;AddRange;(System.CodeDom.CodeTypeReference[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;CodeTypeReferenceCollection;(System.CodeDom.CodeTypeReferenceCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;CodeTypeReferenceCollection;(System.CodeDom.CodeTypeReference[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;CopyTo;(System.CodeDom.CodeTypeReference[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeReference);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;Remove;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeTypeReferenceCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeReference);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeTypeReferenceExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;set_Name;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableDeclarationStatement;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableReferenceExpression;false;CodeVariableReferenceExpression;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.CodeDom;CodeVariableReferenceExpression;false;get_VariableName;();;Argument[this];ReturnValue;taint;df-generated | +| System.CodeDom;CodeVariableReferenceExpression;false;set_VariableName;(System.String);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Concurrent;BlockingCollection;false;Add;(T);;Argument[0];Argument[this].Element;value;manual | | System.Collections.Concurrent;BlockingCollection;false;Add;(T,System.Threading.CancellationToken);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Concurrent;BlockingCollection;false;BlockingCollection;(System.Collections.Concurrent.IProducerConsumerCollection);;Argument[0].Element;Argument[this];taint;df-generated | @@ -4855,6 +5307,283 @@ summary | System.ComponentModel;WarningException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.ComponentModel;Win32Exception;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.ComponentModel;Win32Exception;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;GetConfigTypeName;(System.Type);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;GetStreamNameForConfigSource;(System.String,System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;GetStreamNameForConfigSource;(System.String,System.String);;Argument[1];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;InitForConfiguration;(System.String,System.String,System.String,System.Configuration.Internal.IInternalConfigRoot,System.Object[]);;Argument[4].Element;ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForRead;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForRead;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object);;Argument[1];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object,System.Boolean);;Argument[1];ReturnValue;taint;df-generated | +| System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object,System.Boolean);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration.Internal;IInternalConfigHost;true;StartMonitoringStreamForChanges;(System.String,System.Configuration.Internal.StreamChangeCallback);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigHost;true;StopMonitoringStreamForChanges;(System.String,System.Configuration.Internal.StreamChangeCallback);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigRoot;true;add_ConfigChanged;(System.Configuration.Internal.InternalConfigEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigRoot;true;add_ConfigRemoved;(System.Configuration.Internal.InternalConfigEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigRoot;true;remove_ConfigChanged;(System.Configuration.Internal.InternalConfigEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;IInternalConfigRoot;true;remove_ConfigRemoved;(System.Configuration.Internal.InternalConfigEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;InternalConfigEventHandler;false;BeginInvoke;(System.Object,System.Configuration.Internal.InternalConfigEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Internal;StreamChangeCallback;false;BeginInvoke;(System.String,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration.Provider;ProviderBase;true;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration.Provider;ProviderBase;true;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[this];taint;df-generated | +| System.Configuration.Provider;ProviderBase;true;get_Description;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration.Provider;ProviderBase;true;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration.Provider;ProviderCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration.Provider;ProviderCollection;false;CopyTo;(System.Configuration.Provider.ProviderBase[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration.Provider;ProviderCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration.Provider;ProviderCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;AppSettingsReader;false;GetValue;(System.String,System.Type);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;AppSettingsSection;false;get_File;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;AppSettingsSection;false;get_Settings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;ApplicationSettingsBase;(System.ComponentModel.IComponent,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;ApplicationSettingsBase;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;add_SettingChanging;(System.Configuration.SettingChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;add_SettingsLoaded;(System.Configuration.SettingsLoadedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;add_SettingsSaving;(System.Configuration.SettingsSavingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;get_SettingsKey;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ApplicationSettingsBase;false;remove_SettingChanging;(System.Configuration.SettingChangingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;remove_SettingsLoaded;(System.Configuration.SettingsLoadedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;remove_SettingsSaving;(System.Configuration.SettingsSavingEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ApplicationSettingsBase;false;set_SettingsKey;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;CallbackValidator;false;CallbackValidator;(System.Type,System.Configuration.ValidatorCallback);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration;CallbackValidatorAttribute;false;get_CallbackMethodName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CallbackValidatorAttribute;false;get_Type;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CallbackValidatorAttribute;false;get_ValidatorInstance;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CallbackValidatorAttribute;false;set_CallbackMethodName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;CallbackValidatorAttribute;false;set_Type;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ClientSettingsSection;false;get_Settings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;CommaDelimitedStringCollection;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;CommaDelimitedStringCollectionConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;CommaDelimitedStringCollectionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateCDataSection;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateComment;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateSignificantWhitespace;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateTextNode;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;CreateWhitespace;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;Load;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;LoadSingleElement;(System.String,System.Xml.XmlTextReader);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigXmlDocument;false;get_Filename;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;GetSectionGroup;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_AssemblyStringTransformer;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_RootSectionGroup;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_SectionGroups;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_Sections;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;get_TypeStringTransformer;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;Configuration;false;set_AssemblyStringTransformer;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;Configuration;false;set_TypeStringTransformer;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;get_AddItemName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;get_ClearItemsName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;get_RemoveItemName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;set_AddItemName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;set_ClearItemsName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationCollectionAttribute;false;set_RemoveItemName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElement;false;get_EvaluationContext;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElement;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElement;true;DeserializeElement;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElement;true;GetTransformedAssemblyString;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElement;true;GetTransformedTypeString;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElement;true;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElement;true;SerializeElement;(System.Xml.XmlWriter,System.Boolean);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElement;true;SerializeToXmlElement;(System.Xml.XmlWriter,System.String);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElement;true;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElement;true;get_ElementProperty;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;BaseAdd;(System.Configuration.ConfigurationElement,System.Boolean);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;ConfigurationElementCollection;(System.Collections.IComparer);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;CopyTo;(System.Configuration.ConfigurationElement[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;get_AddElementName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;get_ClearElementName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;get_RemoveElementName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;set_AddElementName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;set_ClearElementName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;false;set_RemoveElementName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;true;BaseAdd;(System.Configuration.ConfigurationElement);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationElementCollection;true;BaseAdd;(System.Int32,System.Configuration.ConfigurationElement);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;ConfigurationErrorsException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;ConfigurationErrorsException;(System.String,System.Exception,System.String,System.Int32);;Argument[2];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;GetFilename;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;GetFilename;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;get_Errors;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;get_Filename;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationErrorsException;false;get_Message;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationException;false;ConfigurationException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationException;false;ConfigurationException;(System.String,System.Exception,System.String,System.Int32);;Argument[2];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConfigurationException;false;GetXmlNodeFilename;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationException;false;get_BareMessage;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationException;false;get_Filename;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationFileMap;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationLocation;false;OpenConfiguration;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;Add;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConfigurationLockCollection;false;CopyTo;(System.String[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;SetFromList;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;get_AttributeList;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationLockCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;ConfigurationManager;false;OpenExeConfiguration;(System.String);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationManager;false;OpenMappedExeConfiguration;(System.Configuration.ExeConfigurationFileMap,System.Configuration.ConfigurationUserLevel);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationManager;false;OpenMappedExeConfiguration;(System.Configuration.ExeConfigurationFileMap,System.Configuration.ConfigurationUserLevel,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationManager;false;OpenMappedMachineConfiguration;(System.Configuration.ConfigurationFileMap);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationProperty;false;ConfigurationProperty;(System.String,System.Type,System.Object,System.ComponentModel.TypeConverter,System.Configuration.ConfigurationValidatorBase,System.Configuration.ConfigurationPropertyOptions,System.String);;Argument[3];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationProperty;false;get_Converter;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationPropertyCollection;false;Add;(System.Configuration.ConfigurationProperty);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationPropertyCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConfigurationPropertyCollection;false;CopyTo;(System.Configuration.ConfigurationProperty[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;ConfigurationPropertyCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationPropertyCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSection;true;DeserializeSection;(System.Xml.XmlReader);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationSection;true;GetRuntimeObject;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;ConfigurationSectionCollection;false;Add;(System.String,System.Configuration.ConfigurationSection);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationSectionCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConfigurationSectionCollection;false;GetKey;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroup;false;get_SectionGroups;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroup;false;get_Sections;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroup;false;get_Type;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroup;false;set_Type;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Add;(System.String,System.Configuration.ConfigurationSectionGroup);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Add;(System.String,System.Configuration.ConfigurationSectionGroup);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConfigurationSectionGroupCollection;false;CopyTo;(System.Configuration.ConfigurationSectionGroup[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Get;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;Get;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;GetKey;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;get_Item;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConfigurationSectionGroupCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettings;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettings;false;get_ConnectionString;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettings;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettings;false;get_ProviderName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;false;Add;(System.Configuration.ConnectionStringSettings);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ConnectionStringSettingsCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ConnectionStringSettingsCollection;false;set_Item;(System.Int32,System.Configuration.ConnectionStringSettings);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;ConnectionStringsSection;false;get_ConnectionStrings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ContextInformation;false;get_HostingContext;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;DefaultSection;false;SerializeSection;(System.Configuration.ConfigurationElement,System.String,System.Configuration.ConfigurationSaveMode);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;DefaultSettingValueAttribute;false;DefaultSettingValueAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;DefaultSettingValueAttribute;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;DictionarySectionHandler;false;Create;(System.Object,System.Object,System.Xml.XmlNode);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;GenericEnumConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;GenericEnumConverter;false;GenericEnumConverter;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;IdnElement;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;IgnoreSection;false;SerializeSection;(System.Configuration.ConfigurationElement,System.String,System.Configuration.ConfigurationSaveMode);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;InfiniteTimeSpanConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;InfiniteTimeSpanConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;IriParsingElement;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;KeyValueConfigurationCollection;false;Add;(System.Configuration.KeyValueConfigurationElement);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;KeyValueConfigurationCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;KeyValueConfigurationCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;KeyValueConfigurationElement;false;KeyValueConfigurationElement;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;KeyValueConfigurationElement;false;KeyValueConfigurationElement;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;KeyValueConfigurationElement;false;get_Key;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;KeyValueConfigurationElement;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;LocalFileSettingsProvider;false;get_ApplicationName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;LocalFileSettingsProvider;false;set_ApplicationName;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;NameValueConfigurationCollection;false;Add;(System.Configuration.NameValueConfigurationElement);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;NameValueConfigurationCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;NameValueConfigurationCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;NameValueConfigurationCollection;false;set_Item;(System.String,System.Configuration.NameValueConfigurationElement);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;NameValueConfigurationElement;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;NameValueConfigurationElement;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;NameValueFileSectionHandler;false;Create;(System.Object,System.Object,System.Xml.XmlNode);;Argument[2].Element;ReturnValue;taint;df-generated | +| System.Configuration;NameValueSectionHandler;false;Create;(System.Object,System.Object,System.Xml.XmlNode);;Argument[2].Element;ReturnValue;taint;df-generated | +| System.Configuration;PropertyInformation;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;PropertyInformationCollection;false;CopyTo;(System.Configuration.PropertyInformation[],System.Int32);;Argument[this];Argument[0].Element;taint;df-generated | +| System.Configuration;PropertyInformationCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedConfigurationProviderCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedConfigurationSection;false;get_DefaultProvider;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedConfigurationSection;false;get_Providers;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedProviderSettings;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProtectedProviderSettings;false;get_Providers;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettings;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettings;false;get_Parameters;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettings;false;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettings;false;get_Type;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettingsCollection;false;Add;(System.Configuration.ProviderSettings);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;ProviderSettingsCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;ProviderSettingsCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;ProviderSettingsCollection;false;set_Item;(System.Int32,System.Configuration.ProviderSettings);;Argument[this];Argument[1];taint;df-generated | +| System.Configuration;RegexStringValidator;false;RegexStringValidator;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SchemeSettingElement;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SchemeSettingElementCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;SectionInformation;false;get_ConfigSource;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SectionInformation;false;get_ProtectionProvider;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SectionInformation;false;get_Type;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SectionInformation;false;set_ConfigSource;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SectionInformation;false;set_Type;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[2];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[3];Argument[this];taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;get_NewValue;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;get_SettingClass;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;get_SettingKey;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingChangingEventArgs;false;get_SettingName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingChangingEventHandler;false;BeginInvoke;(System.Object,System.Configuration.SettingChangingEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Configuration;SettingElement;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingElement;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingElementCollection;false;Add;(System.Configuration.SettingElement);;Argument[this];Argument[0];taint;df-generated | +| System.Configuration;SettingElementCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;SettingElementCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;SettingValueElement;false;get_ValueXml;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingValueElement;false;set_ValueXml;(System.Xml.XmlNode);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[1].Element;Argument[this];taint;df-generated | +| System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[2].Element;Argument[this];taint;df-generated | +| System.Configuration;SettingsBase;false;Synchronized;(System.Configuration.SettingsBase);;Argument[0];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_Context;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_Properties;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_PropertyValues;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsBase;true;get_Providers;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsDescriptionAttribute;false;SettingsDescriptionAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsDescriptionAttribute;false;get_Description;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsGroupDescriptionAttribute;false;SettingsGroupDescriptionAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsGroupDescriptionAttribute;false;get_Description;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsGroupNameAttribute;false;SettingsGroupNameAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsGroupNameAttribute;false;get_GroupName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsLoadedEventArgs;false;SettingsLoadedEventArgs;(System.Configuration.SettingsProvider);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsLoadedEventArgs;false;get_Provider;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsLoadedEventHandler;false;BeginInvoke;(System.Object,System.Configuration.SettingsLoadedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Configuration;SettingsPropertyCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;SettingsPropertyCollection;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;SettingsPropertyValue;false;get_PropertyValue;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyValue;false;get_SerializedValue;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyValue;false;set_PropertyValue;(System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsPropertyValue;false;set_SerializedValue;(System.Object);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsPropertyValueCollection;false;Add;(System.Configuration.SettingsPropertyValue);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsPropertyValueCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Configuration;SettingsPropertyValueCollection;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyValueCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsPropertyValueCollection;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Configuration;SettingsProviderAttribute;false;SettingsProviderAttribute;(System.String);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsProviderAttribute;false;SettingsProviderAttribute;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;SettingsProviderAttribute;false;get_ProviderTypeName;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsProviderCollection;false;get_Item;(System.String);;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;SettingsSavingEventHandler;false;BeginInvoke;(System.Object,System.ComponentModel.CancelEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Configuration;StringValidator;false;StringValidator;(System.Int32,System.Int32,System.String);;Argument[2];Argument[this];taint;df-generated | +| System.Configuration;SubclassTypeValidator;false;SubclassTypeValidator;(System.Type);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;TimeSpanValidator;false;TimeSpanValidator;(System.TimeSpan,System.TimeSpan,System.Boolean,System.Int64);;Argument[0];Argument[this];taint;df-generated | +| System.Configuration;TimeSpanValidator;false;TimeSpanValidator;(System.TimeSpan,System.TimeSpan,System.Boolean,System.Int64);;Argument[1];Argument[this];taint;df-generated | +| System.Configuration;TypeNameConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;UriSection;false;get_Idn;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;UriSection;false;get_IriParsing;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;UriSection;false;get_SchemeSettings;();;Argument[this];ReturnValue;taint;df-generated | +| System.Configuration;ValidatorCallback;false;BeginInvoke;(System.Object,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Configuration;WhiteSpaceTrimStringConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;df-generated | +| System.Configuration;WhiteSpaceTrimStringConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Data.Common;DataAdapter;false;add_FillError;(System.Data.FillErrorEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Data.Common;DataAdapter;false;get_TableMappings;();;Argument[this];ReturnValue;taint;df-generated | | System.Data.Common;DataAdapter;false;remove_FillError;(System.Data.FillErrorEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | @@ -5038,9 +5767,403 @@ summary | System.Data.Common;RowUpdatingEventArgs;false;set_BaseCommand;(System.Data.IDbCommand);;Argument[0];Argument[this];taint;df-generated | | System.Data.Common;RowUpdatingEventArgs;false;set_Command;(System.Data.IDbCommand);;Argument[0];Argument[this];taint;df-generated | | System.Data.Common;RowUpdatingEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[this];taint;df-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;All;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Any;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;CrossApply;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;FullOuterJoin;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;InnerJoin;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Join;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func,System.Func);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;LeftOuterJoin;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OrderBy;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OrderBy;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OrderByDescending;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OrderByDescending;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;OuterApply;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Select;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;SelectMany;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;SelectMany;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;SelectMany;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;ThenBy;(System.Data.Entity.Core.Common.CommandTrees.DbSortExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;ThenBy;(System.Data.Entity.Core.Common.CommandTrees.DbSortExpression,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;ThenByDescending;(System.Data.Entity.Core.Common.CommandTrees.DbSortExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;ThenByDescending;(System.Data.Entity.Core.Common.CommandTrees.DbSortExpression,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;DbExpressionBuilder;false;Where;(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[16];Argument[16].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[15];Argument[15].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[14];Argument[14].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[13];Argument[13].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[12];Argument[12].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[11];Argument[11].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[10];Argument[10].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[9];Argument[9].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[7];Argument[7].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[6];Argument[6].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common.CommandTrees;DbLambda;false;Create;(System.Data.Entity.Core.Metadata.Edm.TypeUsage,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common;DbCommandDefinition;false;DbCommandDefinition;(System.Data.Common.DbCommand,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Common;DbProviderServices;true;RegisterInfoMessageHandler;(System.Data.Common.DbConnection,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;CsdlSerializer;false;add_OnError;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;CsdlSerializer;false;remove_OnError;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;LoadFromAssembly;(System.Reflection.Assembly,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;MetadataWorkspace;false;MetadataWorkspace;(System.Func,System.Func,System.Func,System.Func);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;ObjectItemCollection;false;LoadFromAssembly;(System.Reflection.Assembly,System.Data.Entity.Core.Metadata.Edm.EdmItemCollection,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;SsdlSerializer;false;add_OnError;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Metadata.Edm;SsdlSerializer;false;remove_OnError;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects.DataClasses;RelatedEnd;false;add_AssociationChanged;(System.ComponentModel.CollectionChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects.DataClasses;RelatedEnd;false;remove_AssociationChanged;(System.ComponentModel.CollectionChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;CompiledQuery;false;Compile;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;LoadProperty;(TEntity,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;LoadProperty;(TEntity,System.Linq.Expressions.Expression>,System.Data.Entity.Core.Objects.MergeOption);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;add_ObjectMaterialized;(System.Data.Entity.Core.Objects.ObjectMaterializedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;add_SavingChanges;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;remove_ObjectMaterialized;(System.Data.Entity.Core.Objects.ObjectMaterializedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectContext;false;remove_SavingChanges;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectMaterializedEventHandler;false;BeginInvoke;(System.Object,System.Data.Entity.Core.Objects.ObjectMaterializedEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectStateManager;false;ChangeRelationshipState;(TEntity,System.Object,System.Linq.Expressions.Expression>,System.Data.Entity.EntityState);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectStateManager;false;add_ObjectStateManagerChanged;(System.ComponentModel.CollectionChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Core.Objects;ObjectStateManager;false;remove_ObjectStateManagerChanged;(System.ComponentModel.CollectionChangeEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.DependencyResolution;DbConfigurationLoadedEventArgs;false;ReplaceService;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.DependencyResolution;ExecutionStrategyResolver;false;ExecutionStrategyResolver;(System.String,System.String,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.DependencyResolution;SingletonDependencyResolver;false;SingletonDependencyResolver;(T,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.DependencyResolution;TransactionHandlerResolver;false;TransactionHandlerResolver;(System.Func,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;Executor+OperationBase;true;Execute;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;Executor+OperationBase;true;Execute;(System.Func>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;Executor+OperationBase;true;Execute;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;ReportHandler;false;ReportHandler;(System.Action,System.Action,System.Action,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;ReportHandler;false;ReportHandler;(System.Action,System.Action,System.Action,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;ReportHandler;false;ReportHandler;(System.Action,System.Action,System.Action,System.Action);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Design;ReportHandler;false;ReportHandler;(System.Action,System.Action,System.Action,System.Action);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Interception;DatabaseLogFormatter;false;DatabaseLogFormatter;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure.Interception;DatabaseLogFormatter;false;DatabaseLogFormatter;(System.Data.Entity.DbContext,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;CommitFailureHandler;false;CommitFailureHandler;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbComplexPropertyEntry;false;ComplexProperty;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbComplexPropertyEntry;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbContextInfo;false;set_OnModelCreating;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbEntityEntry;false;Collection;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbEntityEntry;false;ComplexProperty;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbEntityEntry;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbEntityEntry;false;Reference;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbExecutionStrategy;false;UnwrapAndHandleException;(System.Exception,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ForEachAsync;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ForEachAsync;(System.Action,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;AllAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;AllAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;AnyAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;AnyAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;CountAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;CountAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;FirstAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;FirstAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;FirstOrDefaultAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;FirstOrDefaultAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ForEachAsync;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ForEachAsync;(System.Action,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;LongCountAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;LongCountAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;SingleAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;SingleAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;SingleOrDefaultAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;SingleOrDefaultAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;DbRawSqlQuery;false;ToDictionaryAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;IDbExecutionStrategy;true;Execute;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;IDbExecutionStrategy;true;Execute;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;IDbExecutionStrategy;true;ExecuteAsync;(System.Func,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Infrastructure;IDbExecutionStrategy;true;ExecuteAsync;(System.Func>,System.Threading.CancellationToken);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations.Builders;TableBuilder;false;ForeignKey;(System.String,System.Linq.Expressions.Expression>,System.Boolean,System.String,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations.Builders;TableBuilder;false;Index;(System.Linq.Expressions.Expression>,System.String,System.Boolean,System.Boolean,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations.Builders;TableBuilder;false;PrimaryKey;(System.Linq.Expressions.Expression>,System.String,System.Boolean,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;AddColumn;(System.String,System.String,System.Func,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;AlterColumn;(System.String,System.String,System.Func,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;AlterStoredProcedure;(System.String,System.Func,System.String,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;AlterTableAnnotations;(System.String,System.Func,System.Collections.Generic.IDictionary,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;CreateStoredProcedure;(System.String,System.Func,System.String,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;CreateTable;(System.String,System.Func,System.Collections.Generic.IDictionary,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigration;false;CreateTable;(System.String,System.Func,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbMigrationsConfiguration;false;SetHistoryContextFactory;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.Migrations;DbSetMigrationsExtensions;false;AddOrUpdate;(System.Data.Entity.IDbSet,System.Linq.Expressions.Expression>,TEntity[]);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;AssociationModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;AssociationModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;AssociationModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;AssociationModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionModificationStoredProceduresConfiguration;false;Delete;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionModificationStoredProceduresConfiguration;false;Insert;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionModificationStoredProceduresConfiguration;false;Update;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;MapToStoredProcedures;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;HasKey;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;Ignore;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;MapToStoredProcedures;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ConventionTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DeleteModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;DependentNavigationPropertyConfiguration;false;HasForeignKey;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Properties;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;EntityMappingConfiguration;false;Requires;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ForeignKeyNavigationPropertyConfiguration;false;Map;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;InsertModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyNavigationPropertyConfiguration;false;WithMany;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyNavigationPropertyConfiguration;false;WithOptional;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyNavigationPropertyConfiguration;false;WithRequired;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;LeftKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;LeftKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;LeftKeyParameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;LeftKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;RightKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;RightKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;RightKeyParameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProcedureConfiguration;false;RightKeyParameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProceduresConfiguration;false;Delete;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyModificationStoredProceduresConfiguration;false;Insert;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyNavigationPropertyConfiguration;false;Map;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ManyToManyNavigationPropertyConfiguration;false;MapToStoredProcedures;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ModificationStoredProceduresConfiguration;false;Delete;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ModificationStoredProceduresConfiguration;false;Insert;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;ModificationStoredProceduresConfiguration;false;Update;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;OptionalNavigationPropertyConfiguration;false;WithMany;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;OptionalNavigationPropertyConfiguration;false;WithOptionalDependent;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;OptionalNavigationPropertyConfiguration;false;WithOptionalPrincipal;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;OptionalNavigationPropertyConfiguration;false;WithRequired;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;PropertyConventionConfiguration;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;PropertyConventionConfiguration;false;Having;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;PropertyConventionConfiguration;false;Where;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;PropertyConventionWithHavingConfiguration;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;RequiredNavigationPropertyConfiguration;false;WithMany;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;RequiredNavigationPropertyConfiguration;false;WithOptional;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;RequiredNavigationPropertyConfiguration;false;WithRequiredDependent;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;RequiredNavigationPropertyConfiguration;false;WithRequiredPrincipal;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;StructuralTypeConfiguration;false;Property;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Having;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Where;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Configure;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Having;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionConfiguration;false;Where;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionWithHavingConfiguration;false;Configure;(System.Action,TValue>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;TypeConventionWithHavingConfiguration;false;Configure;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Navigation;(System.Linq.Expressions.Expression>,System.Action>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Parameter;(System.Linq.Expressions.Expression>,System.String,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Configuration;UpdateModificationStoredProcedureConfiguration;false;Result;(System.Linq.Expressions.Expression>,System.String);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Conventions;AttributeToColumnAnnotationConvention;false;AttributeToColumnAnnotationConvention;(System.String,System.Func,TAnnotation>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration.Conventions;AttributeToTableAnnotationConvention;false;AttributeToTableAnnotationConvention;(System.String,System.Func,TAnnotation>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;ComplexTypeConfiguration;false;Ignore;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasIndex;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasKey;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasKey;(System.Linq.Expressions.Expression>,System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasKey;(System.Linq.Expressions.Expression>,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasMany;(System.Linq.Expressions.Expression>>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasOptional;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;HasRequired;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;Ignore;(System.Linq.Expressions.Expression>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;Map;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;Map;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity.ModelConfiguration;EntityTypeConfiguration;false;MapToStoredProcedures;(System.Action>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;Database;false;set_Log;(System.Action);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetContextFactory;(System.Type,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetContextFactory;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetDatabaseLogFormatter;(System.Func,System.Data.Entity.Infrastructure.Interception.DatabaseLogFormatter>);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetDefaultHistoryContext;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetDefaultTransactionHandler;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetExecutionStrategy;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetExecutionStrategy;(System.String,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetHistoryContext;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetMetadataAnnotationSerializer;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetMigrationSqlGenerator;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetModelCacheKey;(System.Func);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetTransactionHandler;(System.String,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;SetTransactionHandler;(System.String,System.Func,System.String);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;add_Loaded;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;DbConfiguration;false;remove_Loaded;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Data.Entity;DbSet;false;Add;(TEntity);;Argument[0];Argument[this].Element;value;manual | | System.Data.Entity;DbSet;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].WithElement;Argument[this];value;manual | | System.Data.Entity;DbSet;false;Attach;(TEntity);;Argument[0];Argument[this].Element;value;manual | +| System.Data.Entity;QueryableExtensions;false;AllAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AllAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AnyAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AnyAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;AverageAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;CountAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;CountAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;FirstAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;FirstAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;FirstOrDefaultAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;FirstOrDefaultAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ForEachAsync;(System.Linq.IQueryable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ForEachAsync;(System.Linq.IQueryable,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ForEachAsync;(System.Linq.IQueryable,System.Action);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ForEachAsync;(System.Linq.IQueryable,System.Action,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;Include;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;LongCountAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;LongCountAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;MaxAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;MaxAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;MinAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;MinAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SingleAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SingleAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SingleOrDefaultAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SingleOrDefaultAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;Skip;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;SumAsync;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;Take;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Func,System.Threading.CancellationToken);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Collections.Generic.IEqualityComparer,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Data.Entity;QueryableExtensions;false;ToDictionaryAsync;(System.Linq.IQueryable,System.Func,System.Threading.CancellationToken);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Data.SqlClient;OnChangeEventHandler;false;BeginInvoke;(System.Object,System.Data.SqlClient.SqlNotificationEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Data.SqlClient;SqlBulkCopy;false;add_SqlRowsCopied;(System.Data.SqlClient.SqlRowsCopiedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Data.SqlClient;SqlBulkCopy;false;remove_SqlRowsCopied;(System.Data.SqlClient.SqlRowsCopiedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | @@ -5821,6 +6944,19 @@ summary | System.Diagnostics;TraceSource;false;get_Switch;();;Argument[this];ReturnValue;taint;df-generated | | System.Diagnostics;TraceSource;false;remove_Initializing;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Diagnostics;TraceSource;false;set_Switch;(System.Diagnostics.SourceSwitch);;Argument[0];Argument[this];taint;df-generated | +| System.Drawing.Configuration;SystemDrawingSection;false;get_BitmapSuffix;();;Argument[this];ReturnValue;taint;df-generated | +| System.Drawing.Imaging;PlayRecordCallback;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_BeginPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_EndPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_PrintPage;(System.Drawing.Printing.PrintPageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;add_QueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_BeginPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_EndPrint;(System.Drawing.Printing.PrintEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_PrintPage;(System.Drawing.Printing.PrintPageEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintDocument;false;remove_QueryPageSettings;(System.Drawing.Printing.QueryPageSettingsEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.PrintEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;PrintPageEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.PrintPageEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing.Printing;QueryPageSettingsEventHandler;false;BeginInvoke;(System.Object,System.Drawing.Printing.QueryPageSettingsEventArgs,System.AsyncCallback,System.Object);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Drawing;Color;false;FromName;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;Color;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | | System.Drawing;Color;false;get_Name;();;Argument[this];ReturnValue;taint;df-generated | @@ -5828,6 +6964,58 @@ summary | System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;ColorTranslator;false;FromHtml;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;ColorTranslator;false;ToHtml;(System.Drawing.Color);;Argument[0];ReturnValue;taint;df-generated | +| System.Drawing;Graphics+DrawImageAbort;false;BeginInvoke;(System.IntPtr,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;BeginInvoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback,System.AsyncCallback,System.Object);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics+EnumerateMetafileProc;false;Invoke;(System.Drawing.Imaging.EmfPlusRecordType,System.Int32,System.Int32,System.IntPtr,System.Drawing.Imaging.PlayRecordCallback);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.Int32);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.Int32);;Argument[5];Argument[5].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.IntPtr);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;DrawImage;(System.Drawing.Image,System.Drawing.Rectangle,System.Single,System.Single,System.Single,System.Single,System.Drawing.GraphicsUnit,System.Drawing.Imaging.ImageAttributes,System.Drawing.Graphics+DrawImageAbort,System.IntPtr);;Argument[8];Argument[8].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.PointF[],System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Point[],System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Graphics;false;EnumerateMetafile;(System.Drawing.Imaging.Metafile,System.Drawing.RectangleF,System.Drawing.RectangleF,System.Drawing.GraphicsUnit,System.Drawing.Graphics+EnumerateMetafileProc,System.IntPtr,System.Drawing.Imaging.ImageAttributes);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Image+GetThumbnailImageAbort;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Drawing;Image;false;GetThumbnailImage;(System.Int32,System.Int32,System.Drawing.Image+GetThumbnailImageAbort,System.IntPtr);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | +| System.Drawing;ImageAnimator;false;Animate;(System.Drawing.Image,System.EventHandler);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Drawing;ImageAnimator;false;StopAnimate;(System.Drawing.Image,System.EventHandler);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | | System.Drawing;Rectangle;false;Inflate;(System.Drawing.Rectangle,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;df-generated | | System.Drawing;RectangleConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;df-generated | @@ -7857,6 +9045,12 @@ summary | System.Linq;Queryable;false;Zip;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[2].Parameter[1];value;manual | | System.Linq;Queryable;false;Zip;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | | System.Linq;Queryable;false;Zip;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2];Argument[2].Parameter[delegate-self];value;manual | +| System.Media;SoundPlayer;false;add_LoadCompleted;(System.ComponentModel.AsyncCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;add_SoundLocationChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;add_StreamChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;remove_LoadCompleted;(System.ComponentModel.AsyncCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;remove_SoundLocationChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Media;SoundPlayer;false;remove_StreamChanged;(System.EventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.DateTime);;Argument[0];Argument[this];taint;df-generated | | System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan);;Argument[1];Argument[this];taint;df-generated | | System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan);;Argument[1];Argument[this];taint;df-generated | @@ -8262,6 +9456,7 @@ summary | System.Net.NetworkInformation;NetworkChange;false;add_NetworkAvailabilityChanged;(System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Net.NetworkInformation;NetworkChange;false;remove_NetworkAddressChanged;(System.Net.NetworkInformation.NetworkAddressChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | System.Net.NetworkInformation;NetworkChange;false;remove_NetworkAvailabilityChanged;(System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | +| System.Net.NetworkInformation;NetworkInformationPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | | System.Net.NetworkInformation;PhysicalAddress;false;GetAddressBytes;();;Argument[this];ReturnValue;taint;df-generated | | System.Net.NetworkInformation;PhysicalAddress;false;PhysicalAddress;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | | System.Net.NetworkInformation;Ping;false;add_PingCompleted;(System.Net.NetworkInformation.PingCompletedEventHandler);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | @@ -10642,7 +11837,27 @@ summary | System.Security.Cryptography;SymmetricAlgorithm;true;get_LegalKeySizes;();;Argument[this];ReturnValue;taint;df-generated | | System.Security.Cryptography;SymmetricAlgorithm;true;set_IV;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | | System.Security.Cryptography;SymmetricAlgorithm;true;set_Key;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | +| System.Security.Permissions;FileDialogPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;FileIOPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;KeyContainerPermissionAccessEntryCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Security.Permissions;PrincipalPermission;false;Copy;();;Argument[this];ReturnValue;taint;df-generated | +| System.Security.Permissions;PrincipalPermission;false;Intersect;(System.Security.IPermission);;Argument[0];ReturnValue;taint;df-generated | +| System.Security.Permissions;PrincipalPermission;false;Intersect;(System.Security.IPermission);;Argument[this];ReturnValue;taint;df-generated | +| System.Security.Permissions;PrincipalPermission;false;Union;(System.Security.IPermission);;Argument[this];ReturnValue;taint;df-generated | +| System.Security.Permissions;PublisherIdentityPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;ReflectionPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;SecurityPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;StrongNameIdentityPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;TypeDescriptorPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;UIPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Permissions;ZoneIdentityPermission;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;ApplicationTrustCollection;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | System.Security.Policy;Evidence;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | +| System.Security.Policy;HashMembershipCondition;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;PolicyStatement;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;PublisherMembershipCondition;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;StrongNameMembershipCondition;false;Copy;();;Argument[this];ReturnValue;value;df-generated | +| System.Security.Policy;ZoneMembershipCondition;false;Copy;();;Argument[this];ReturnValue;value;df-generated | | System.Security.Principal;GenericIdentity;false;Clone;();;Argument[this];ReturnValue;taint;df-generated | | System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.Security.Principal.GenericIdentity);;Argument[0];Argument[this];taint;df-generated | | System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String);;Argument[0];Argument[this];taint;df-generated | @@ -10658,7 +11873,9 @@ summary | System.Security.Principal;WindowsIdentity;false;RunImpersonated;(Microsoft.Win32.SafeHandles.SafeAccessTokenHandle,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Security.Principal;WindowsIdentity;false;RunImpersonatedAsync;(Microsoft.Win32.SafeHandles.SafeAccessTokenHandle,System.Func);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Security.Principal;WindowsIdentity;false;RunImpersonatedAsync;(Microsoft.Win32.SafeHandles.SafeAccessTokenHandle,System.Func>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| System.Security;HostProtectionException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.Security;PermissionSet;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | +| System.Security;SecurityContext;false;Run;(System.Security.SecurityContext,System.Threading.ContextCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[0];Argument[this];taint;df-generated | | System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[1];Argument[this];taint;df-generated | | System.Security;SecurityElement;false;AddChild;(System.Security.SecurityElement);;Argument[0];Argument[this];taint;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/options b/csharp/ql/test/library-tests/dataflow/library/options index f03707632a4..00c7d472fd9 100644 --- a/csharp/ql/test/library-tests/dataflow/library/options +++ b/csharp/ql/test/library-tests/dataflow/library/options @@ -4,5 +4,6 @@ semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resour semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/Dapper/2.1.24/Dapper.csproj semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/ServiceStack/8.0.0/ServiceStack.csproj semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/ServiceStack.OrmLite.SqlServer/8.0.0/ServiceStack.OrmLite.SqlServer.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/EntityFramework/6.4.4/EntityFramework.csproj semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs -semmle-extractor-options: ${testdir}/../../../resources/stubs/EntityFramework.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/EntityFrameworkCore.cs diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected index 820aca482f3..8522487dff7 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected @@ -141,6 +141,35 @@ summary | System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | | System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | | System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | neutral sourceNode sinkNode diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/options b/csharp/ql/test/library-tests/frameworks/EntityFramework/options index 24115b19ffc..b7af0693383 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/options +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/options @@ -1,2 +1,4 @@ -semmle-extractor-options: /r:System.Data.dll /r:System.ComponentModel.Primitives.dll /r:System.ComponentModel.TypeConverter.dll ${testdir}/../../../resources/stubs/EntityFramework.cs ${testdir}/../../../resources/stubs/System.Data.cs /r:System.ComponentModel.TypeConverter.dll /r:System.Data.Common.dll /r:System.Linq.dll -semmle-extractor-options: ${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/System.ComponentModel.Annotations.cs ${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/System.ComponentModel.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/EntityFramework/6.4.4/EntityFramework.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/EntityFrameworkCore.cs diff --git a/csharp/ql/test/library-tests/frameworks/sql/Sql1.expected b/csharp/ql/test/library-tests/frameworks/sql/Sql1.expected index 84f522a4367..00c5ffbd573 100644 --- a/csharp/ql/test/library-tests/frameworks/sql/Sql1.expected +++ b/csharp/ql/test/library-tests/frameworks/sql/Sql1.expected @@ -1,10 +1,10 @@ sqlExpressions -| sql.cs:44:23:44:44 | object creation of type MySqlCommand | sql.cs:44:40:44:43 | access to parameter text | -| sql.cs:45:13:45:38 | ... = ... | sql.cs:45:35:45:38 | access to parameter text | -| sql.cs:46:13:46:34 | object creation of type MySqlCommand | sql.cs:46:30:46:33 | access to parameter text | -| sql.cs:46:13:46:53 | ... = ... | sql.cs:46:50:46:53 | access to parameter text | +| sql.cs:54:23:54:44 | object creation of type MySqlCommand | sql.cs:54:40:54:43 | access to parameter text | +| sql.cs:55:13:55:38 | ... = ... | sql.cs:55:35:55:38 | access to parameter text | +| sql.cs:56:13:56:34 | object creation of type MySqlCommand | sql.cs:56:30:56:33 | access to parameter text | +| sql.cs:56:13:56:53 | ... = ... | sql.cs:56:50:56:53 | access to parameter text | sqlCsvSinks -| sql.cs:43:46:43:65 | object creation of type SqlCommand | sql.cs:43:61:43:64 | access to parameter text | -| sql.cs:47:13:47:42 | object creation of type SqlDataAdapter | sql.cs:47:32:47:35 | access to parameter text | -| sql.cs:48:13:48:47 | call to method ExecuteScalar | sql.cs:48:43:48:46 | access to parameter text | -| sql.cs:49:13:49:75 | call to method ExecuteScalar | sql.cs:49:71:49:74 | access to parameter text | +| sql.cs:53:46:53:65 | object creation of type SqlCommand | sql.cs:53:61:53:64 | access to parameter text | +| sql.cs:57:13:57:50 | object creation of type SqlDataAdapter | sql.cs:57:32:57:35 | access to parameter text | +| sql.cs:58:13:58:47 | call to method ExecuteScalar | sql.cs:58:43:58:46 | access to parameter text | +| sql.cs:59:13:59:75 | call to method ExecuteScalar | sql.cs:59:71:59:74 | access to parameter text | diff --git a/csharp/ql/test/library-tests/frameworks/sql/options b/csharp/ql/test/library-tests/frameworks/sql/options index 38870455fc8..f767c33228f 100644 --- a/csharp/ql/test/library-tests/frameworks/sql/options +++ b/csharp/ql/test/library-tests/frameworks/sql/options @@ -1,3 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Data.cs -semmle-extractor-options: ${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/System.ComponentModel.cs -semmle-extractor-options: /r:System.ComponentModel.TypeConverter.dll /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.5/System.Data.SqlClient.csproj diff --git a/csharp/ql/test/library-tests/frameworks/sql/sql.cs b/csharp/ql/test/library-tests/frameworks/sql/sql.cs index f495268034f..78f906bdf75 100644 --- a/csharp/ql/test/library-tests/frameworks/sql/sql.cs +++ b/csharp/ql/test/library-tests/frameworks/sql/sql.cs @@ -8,11 +8,21 @@ namespace MySql.Data.MySqlClient { public MySqlCommand(string commandText) { } + public void Cancel() => throw null; public string CommandText { get; set; } - - public IDataReader ExecuteReader() => throw null; + public int CommandTimeout { get; set; } public CommandType CommandType { get; set; } - public IDataParameterCollection Parameters { get; set; } + public IDbConnection Connection { get; set; } + public IDbDataParameter CreateParameter() => throw null; + public int ExecuteNonQuery() => throw null; + public IDataReader ExecuteReader() => throw null; + public IDataReader ExecuteReader(CommandBehavior behavior) => throw null; + public object ExecuteScalar() => throw null; + public IDataParameterCollection Parameters { get; } + public void Prepare() => throw null; + public IDbTransaction Transaction { get; set; } + public UpdateRowSource UpdatedRowSource { get; set; } + public void Dispose() => throw null; } public class MySqlHelper @@ -44,7 +54,7 @@ namespace SqlClientTests command = new MySqlCommand(text); command.CommandText = text; new MySqlCommand(text).CommandText = text; - new SqlDataAdapter(text, null); + new SqlDataAdapter(text, string.Empty); MySqlHelper.ExecuteScalar("", text); SqlHelper.ExecuteScalar("", System.Data.CommandType.Text, text); } diff --git a/csharp/ql/test/library-tests/frameworks/system/data/entity/options b/csharp/ql/test/library-tests/frameworks/system/data/entity/options index 07b71b05003..ee3a5b16e19 100644 --- a/csharp/ql/test/library-tests/frameworks/system/data/entity/options +++ b/csharp/ql/test/library-tests/frameworks/system/data/entity/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/EntityFramework.cs /r:System.ComponentModel.TypeConverter.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/EntityFramework/6.4.4/EntityFramework.csproj diff --git a/csharp/ql/test/library-tests/security/dataflow/flowsources/options b/csharp/ql/test/library-tests/security/dataflow/flowsources/options index 84f5c37cb74..3eae271e2e3 100644 --- a/csharp/ql/test/library-tests/security/dataflow/flowsources/options +++ b/csharp/ql/test/library-tests/security/dataflow/flowsources/options @@ -1 +1,4 @@ -semmle-extractor-options: /r:System.Data.dll /r:System.ComponentModel.Primitives.dll /r:System.ComponentModel.TypeConverter.dll ${testdir}/../../../../resources/stubs/EntityFramework.cs ${testdir}/../../../../resources/stubs/System.Data.cs /r:System.ComponentModel.TypeConverter.dll /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/System.Data.OleDb/8.0.0/System.Data.OleDb.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/EntityFramework/6.4.4/EntityFramework.csproj diff --git a/csharp/ql/test/resources/stubs/EntityFramework.cs b/csharp/ql/test/resources/stubs/EntityFrameworkCore.cs similarity index 67% rename from csharp/ql/test/resources/stubs/EntityFramework.cs rename to csharp/ql/test/resources/stubs/EntityFrameworkCore.cs index dca9c1685cb..db77ca4dc9c 100644 --- a/csharp/ql/test/resources/stubs/EntityFramework.cs +++ b/csharp/ql/test/resources/stubs/EntityFrameworkCore.cs @@ -4,54 +4,6 @@ using System.ComponentModel; using System.Threading.Tasks; using System; -namespace System.Data.Entity -{ - public class DbSet - { - } - - public class DbSet : IEnumerable - { - public void Add(TEntity t) { } - public void AddRange(IEnumerable t) { } - public void Attach(TEntity t) { } - IEnumerator IEnumerable.GetEnumerator() => null; - IEnumerator IEnumerable.GetEnumerator() => null; - } - - public class Database - { - public int ExecuteSqlQuery(string sql, params object[] parameters) => 0; - public int ExecuteSqlCommand(string sql, params object[] parameters) => 0; - public async Task ExecuteSqlCommandAsync(string sql, params object[] parameters) => throw null; - public Infrastructure.DbRawSqlQuery SqlQuery(string sql, params object[] parameters) => null; - } - - public class DbContext : IDisposable - { - public void Dispose() { } - public Database Database => null; - public Infrastructure.DbRawSqlQuery SqlQuery(string sql, params object[] parameters) => null; - public int SaveChanges() => 0; - public System.Threading.Tasks.Task SaveChangesAsync() => null; - } -} - -namespace System.Data.Entity.Infrastructure -{ - interface IDbAsyncEnumerable - { - } - - public class DbRawSqlQuery : IEnumerable, IListSource, IDbAsyncEnumerable - { - IEnumerator IEnumerable.GetEnumerator() => null; - IEnumerator IEnumerable.GetEnumerator() => null; - bool IListSource.ContainsListCollection => false; - IList IListSource.GetList() => null; - } -} - namespace Microsoft.EntityFrameworkCore { public class DbSet : IEnumerable diff --git a/csharp/ql/test/resources/stubs/Microsoft.NETCore.Platforms/3.1.0/Microsoft.NETCore.Platforms.csproj b/csharp/ql/test/resources/stubs/Microsoft.NETCore.Platforms/3.1.0/Microsoft.NETCore.Platforms.csproj new file mode 100644 index 00000000000..61622bc5296 --- /dev/null +++ b/csharp/ql/test/resources/stubs/Microsoft.NETCore.Platforms/3.1.0/Microsoft.NETCore.Platforms.csproj @@ -0,0 +1,12 @@ + + + net8.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/ServiceStack.Common/8.0.0/ServiceStack.Common.cs b/csharp/ql/test/resources/stubs/ServiceStack.Common/8.0.0/ServiceStack.Common.cs index 67302ffe2d5..2e13f82b81f 100644 --- a/csharp/ql/test/resources/stubs/ServiceStack.Common/8.0.0/ServiceStack.Common.cs +++ b/csharp/ql/test/resources/stubs/ServiceStack.Common/8.0.0/ServiceStack.Common.cs @@ -1436,10 +1436,14 @@ namespace ServiceStack public long decrBy(long value, long by) => throw null; public long decrement(long value) => throw null; public long decrementBy(long value, long by) => throw null; + public object @default(object returnTarget, object elseReturn) => throw null; public string dirPath(string filePath) => throw null; public System.Collections.Generic.IEnumerable distinct(System.Collections.Generic.IEnumerable items) => throw null; public double div(double lhs, double rhs) => throw null; public double divide(double lhs, double rhs) => throw null; + public object @do(ServiceStack.Script.ScriptScopeContext scope, object expression) => throw null; + public System.Threading.Tasks.Task @do(ServiceStack.Script.ScriptScopeContext scope, object target, object expression) => throw null; + public System.Threading.Tasks.Task @do(ServiceStack.Script.ScriptScopeContext scope, object target, object expression, object scopeOptions) => throw null; public object doIf(object test) => throw null; public object doIf(object ignoreTarget, object test) => throw null; public double doubleAdd(double lhs, double rhs) => throw null; @@ -1558,6 +1562,8 @@ namespace ServiceStack public string httpPathInfo(ServiceStack.Script.ScriptScopeContext scope) => throw null; public string httpRequestUrl(ServiceStack.Script.ScriptScopeContext scope) => throw null; public string humanize(string text) => throw null; + public object @if(object test) => throw null; + public object @if(object returnTarget, object test) => throw null; public object ifDebug(ServiceStack.Script.ScriptScopeContext scope, object ignoreTarget) => throw null; public object ifDebug(ServiceStack.Script.ScriptScopeContext scope) => throw null; public object ifDo(object test) => throw null; @@ -1840,6 +1846,9 @@ namespace ServiceStack public object resolveContextArg(ServiceStack.Script.ScriptScopeContext scope, string name) => throw null; public object resolveGlobal(ServiceStack.Script.ScriptScopeContext scope, string name) => throw null; public object resolvePageArg(ServiceStack.Script.ScriptScopeContext scope, string name) => throw null; + public ServiceStack.Script.StopExecution @return(ServiceStack.Script.ScriptScopeContext scope) => throw null; + public ServiceStack.Script.StopExecution @return(ServiceStack.Script.ScriptScopeContext scope, object returnValue) => throw null; + public ServiceStack.Script.StopExecution @return(ServiceStack.Script.ScriptScopeContext scope, object returnValue, System.Collections.Generic.Dictionary returnArgs) => throw null; public System.Collections.Generic.IEnumerable reverse(ServiceStack.Script.ScriptScopeContext scope, System.Collections.Generic.IEnumerable original) => throw null; public string rightPart(string text, string needle) => throw null; public double round(double value) => throw null; @@ -1930,6 +1939,8 @@ namespace ServiceStack public System.Collections.Generic.IEnumerable thenByDescending(ServiceStack.Script.ScriptScopeContext scope, object target, object expression) => throw null; public System.Collections.Generic.IEnumerable thenByDescending(ServiceStack.Script.ScriptScopeContext scope, object target, object expression, object scopeOptions) => throw null; public static System.Collections.Generic.IEnumerable thenByInternal(string filterName, ServiceStack.Script.ScriptScopeContext scope, object target, object expression, object scopeOptions) => throw null; + public object @throw(ServiceStack.Script.ScriptScopeContext scope, string message) => throw null; + public object @throw(ServiceStack.Script.ScriptScopeContext scope, string message, object options) => throw null; public object throwArgumentException(ServiceStack.Script.ScriptScopeContext scope, string message) => throw null; public object throwArgumentException(ServiceStack.Script.ScriptScopeContext scope, string message, string options) => throw null; public object throwArgumentNullException(ServiceStack.Script.ScriptScopeContext scope, string paramName) => throw null; @@ -3163,6 +3174,7 @@ namespace ServiceStack public ProtectedScripts() => throw null; public ServiceStack.Script.IgnoreResult Decrypt(string path) => throw null; public ServiceStack.Script.IgnoreResult Decrypt(ServiceStack.Script.FileScripts fs, string path) => throw null; + public object @default(string typeName) => throw null; public ServiceStack.Script.IgnoreResult Delete(string path) => throw null; public ServiceStack.Script.IgnoreResult Delete(ServiceStack.Script.IOScript os, string path) => throw null; public string deleteDirectory(string virtualPath) => throw null; @@ -3253,6 +3265,8 @@ namespace ServiceStack public ServiceStack.Script.IgnoreResult Move(string from, string to) => throw null; public ServiceStack.Script.IgnoreResult Move(ServiceStack.Script.IOScript os, string from, string to) => throw null; public string mv(ServiceStack.Script.ScriptScopeContext scope, string from, string to) => throw null; + public object @new(string typeName) => throw null; + public object @new(string typeName, System.Collections.Generic.List constructorArgs) => throw null; public string osPaths(string path) => throw null; public string proc(ServiceStack.Script.ScriptScopeContext scope, string fileName) => throw null; public string proc(ServiceStack.Script.ScriptScopeContext scope, string fileName, System.Collections.Generic.Dictionary options) => throw null; @@ -3284,6 +3298,7 @@ namespace ServiceStack public string textContents(ServiceStack.IO.IVirtualFile file) => throw null; public string touch(ServiceStack.Script.ScriptScopeContext scope, string target) => throw null; public static string TypeNotFoundErrorMessage(string typeName) => throw null; + public System.Type @typeof(string typeName) => throw null; public System.Type typeofProgId(string name) => throw null; public string typeQualifiedName(System.Type type) => throw null; public System.ReadOnlyMemory urlBytesContents(ServiceStack.Script.ScriptScopeContext scope, string url, object options) => throw null; diff --git a/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/8.0.0/System.Configuration.ConfigurationManager.cs b/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/8.0.0/System.Configuration.ConfigurationManager.cs new file mode 100644 index 00000000000..f0db1f58671 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/8.0.0/System.Configuration.ConfigurationManager.cs @@ -0,0 +1,1542 @@ +// This file contains auto-generated code. +// Generated from `System.Configuration.ConfigurationManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51`. +namespace System +{ + namespace Configuration + { + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class ApplicationScopedSettingAttribute : System.Configuration.SettingAttribute + { + public ApplicationScopedSettingAttribute() => throw null; + } + public abstract class ApplicationSettingsBase : System.Configuration.SettingsBase, System.ComponentModel.INotifyPropertyChanged + { + public override System.Configuration.SettingsContext Context { get => throw null; } + protected ApplicationSettingsBase() => throw null; + protected ApplicationSettingsBase(System.ComponentModel.IComponent owner) => throw null; + protected ApplicationSettingsBase(string settingsKey) => throw null; + protected ApplicationSettingsBase(System.ComponentModel.IComponent owner, string settingsKey) => throw null; + public object GetPreviousVersion(string propertyName) => throw null; + protected virtual void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) => throw null; + protected virtual void OnSettingChanging(object sender, System.Configuration.SettingChangingEventArgs e) => throw null; + protected virtual void OnSettingsLoaded(object sender, System.Configuration.SettingsLoadedEventArgs e) => throw null; + protected virtual void OnSettingsSaving(object sender, System.ComponentModel.CancelEventArgs e) => throw null; + public override System.Configuration.SettingsPropertyCollection Properties { get => throw null; } + public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; + public override System.Configuration.SettingsPropertyValueCollection PropertyValues { get => throw null; } + public override System.Configuration.SettingsProviderCollection Providers { get => throw null; } + public void Reload() => throw null; + public void Reset() => throw null; + public override void Save() => throw null; + public event System.Configuration.SettingChangingEventHandler SettingChanging; + public string SettingsKey { get => throw null; set { } } + public event System.Configuration.SettingsLoadedEventHandler SettingsLoaded; + public event System.Configuration.SettingsSavingEventHandler SettingsSaving; + public override object this[string propertyName] { get => throw null; set { } } + public virtual void Upgrade() => throw null; + } + public sealed class ApplicationSettingsGroup : System.Configuration.ConfigurationSectionGroup + { + public ApplicationSettingsGroup() => throw null; + } + public class AppSettingsReader + { + public AppSettingsReader() => throw null; + public object GetValue(string key, System.Type type) => throw null; + } + public sealed class AppSettingsSection : System.Configuration.ConfigurationSection + { + public AppSettingsSection() => throw null; + protected override void DeserializeElement(System.Xml.XmlReader reader, bool serializeCollectionKey) => throw null; + public string File { get => throw null; set { } } + protected override object GetRuntimeObject() => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + protected override void Reset(System.Configuration.ConfigurationElement parentSection) => throw null; + public System.Configuration.KeyValueConfigurationCollection Settings { get => throw null; } + } + public sealed class CallbackValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public CallbackValidator(System.Type type, System.Configuration.ValidatorCallback callback) => throw null; + public override void Validate(object value) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class CallbackValidatorAttribute : System.Configuration.ConfigurationValidatorAttribute + { + public string CallbackMethodName { get => throw null; set { } } + public CallbackValidatorAttribute() => throw null; + public System.Type Type { get => throw null; set { } } + public override System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + } + public sealed class ClientSettingsSection : System.Configuration.ConfigurationSection + { + public ClientSettingsSection() => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public System.Configuration.SettingElementCollection Settings { get => throw null; } + } + public sealed class CommaDelimitedStringCollection : System.Collections.Specialized.StringCollection + { + public void Add(string value) => throw null; + public void AddRange(string[] range) => throw null; + public void Clear() => throw null; + public System.Configuration.CommaDelimitedStringCollection Clone() => throw null; + public CommaDelimitedStringCollection() => throw null; + public void Insert(int index, string value) => throw null; + public bool IsModified { get => throw null; } + public bool IsReadOnly { get => throw null; } + public void Remove(string value) => throw null; + public void SetReadOnly() => throw null; + public string this[int index] { get => throw null; set { } } + public override string ToString() => throw null; + } + public sealed class CommaDelimitedStringCollectionConverter : System.Configuration.ConfigurationConverterBase + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public CommaDelimitedStringCollectionConverter() => throw null; + } + public sealed class Configuration + { + public System.Configuration.AppSettingsSection AppSettings { get => throw null; } + public System.Func AssemblyStringTransformer { get => throw null; set { } } + public System.Configuration.ConnectionStringsSection ConnectionStrings { get => throw null; } + public System.Configuration.ContextInformation EvaluationContext { get => throw null; } + public string FilePath { get => throw null; } + public System.Configuration.ConfigurationSection GetSection(string sectionName) => throw null; + public System.Configuration.ConfigurationSectionGroup GetSectionGroup(string sectionGroupName) => throw null; + public bool HasFile { get => throw null; } + public System.Configuration.ConfigurationLocationCollection Locations { get => throw null; } + public bool NamespaceDeclared { get => throw null; set { } } + public System.Configuration.ConfigurationSectionGroup RootSectionGroup { get => throw null; } + public void Save() => throw null; + public void Save(System.Configuration.ConfigurationSaveMode saveMode) => throw null; + public void Save(System.Configuration.ConfigurationSaveMode saveMode, bool forceSaveAll) => throw null; + public void SaveAs(string filename) => throw null; + public void SaveAs(string filename, System.Configuration.ConfigurationSaveMode saveMode) => throw null; + public void SaveAs(string filename, System.Configuration.ConfigurationSaveMode saveMode, bool forceSaveAll) => throw null; + public System.Configuration.ConfigurationSectionGroupCollection SectionGroups { get => throw null; } + public System.Configuration.ConfigurationSectionCollection Sections { get => throw null; } + public System.Runtime.Versioning.FrameworkName TargetFramework { get => throw null; set { } } + public System.Func TypeStringTransformer { get => throw null; set { } } + } + public enum ConfigurationAllowDefinition + { + MachineOnly = 0, + MachineToWebRoot = 100, + MachineToApplication = 200, + Everywhere = 300, + } + public enum ConfigurationAllowExeDefinition + { + MachineOnly = 0, + MachineToApplication = 100, + MachineToRoamingUser = 200, + MachineToLocalUser = 300, + } + [System.AttributeUsage((System.AttributeTargets)132)] + public sealed class ConfigurationCollectionAttribute : System.Attribute + { + public string AddItemName { get => throw null; set { } } + public string ClearItemsName { get => throw null; set { } } + public System.Configuration.ConfigurationElementCollectionType CollectionType { get => throw null; set { } } + public ConfigurationCollectionAttribute(System.Type itemType) => throw null; + public System.Type ItemType { get => throw null; } + public string RemoveItemName { get => throw null; set { } } + } + public abstract class ConfigurationConverterBase : System.ComponentModel.TypeConverter + { + public override bool CanConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Type type) => throw null; + public override bool CanConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Type type) => throw null; + protected ConfigurationConverterBase() => throw null; + } + public abstract class ConfigurationElement + { + protected ConfigurationElement() => throw null; + public System.Configuration.Configuration CurrentConfiguration { get => throw null; } + protected virtual void DeserializeElement(System.Xml.XmlReader reader, bool serializeCollectionKey) => throw null; + public System.Configuration.ElementInformation ElementInformation { get => throw null; } + protected virtual System.Configuration.ConfigurationElementProperty ElementProperty { get => throw null; } + public override bool Equals(object compareTo) => throw null; + protected System.Configuration.ContextInformation EvaluationContext { get => throw null; } + public override int GetHashCode() => throw null; + protected virtual string GetTransformedAssemblyString(string assemblyName) => throw null; + protected virtual string GetTransformedTypeString(string typeName) => throw null; + protected bool HasContext { get => throw null; } + protected virtual void Init() => throw null; + protected virtual void InitializeDefault() => throw null; + protected virtual bool IsModified() => throw null; + public virtual bool IsReadOnly() => throw null; + protected virtual void ListErrors(System.Collections.IList errorList) => throw null; + public System.Configuration.ConfigurationLockCollection LockAllAttributesExcept { get => throw null; } + public System.Configuration.ConfigurationLockCollection LockAllElementsExcept { get => throw null; } + public System.Configuration.ConfigurationLockCollection LockAttributes { get => throw null; } + public System.Configuration.ConfigurationLockCollection LockElements { get => throw null; } + public bool LockItem { get => throw null; set { } } + protected virtual bool OnDeserializeUnrecognizedAttribute(string name, string value) => throw null; + protected virtual bool OnDeserializeUnrecognizedElement(string elementName, System.Xml.XmlReader reader) => throw null; + protected virtual object OnRequiredPropertyNotFound(string name) => throw null; + protected virtual void PostDeserialize() => throw null; + protected virtual void PreSerialize(System.Xml.XmlWriter writer) => throw null; + protected virtual System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + protected virtual void Reset(System.Configuration.ConfigurationElement parentElement) => throw null; + protected virtual void ResetModified() => throw null; + protected virtual bool SerializeElement(System.Xml.XmlWriter writer, bool serializeCollectionKey) => throw null; + protected virtual bool SerializeToXmlElement(System.Xml.XmlWriter writer, string elementName) => throw null; + protected void SetPropertyValue(System.Configuration.ConfigurationProperty prop, object value, bool ignoreLocks) => throw null; + protected virtual void SetReadOnly() => throw null; + protected object this[System.Configuration.ConfigurationProperty prop] { get => throw null; set { } } + protected object this[string propertyName] { get => throw null; set { } } + protected virtual void Unmerge(System.Configuration.ConfigurationElement sourceElement, System.Configuration.ConfigurationElement parentElement, System.Configuration.ConfigurationSaveMode saveMode) => throw null; + } + public abstract class ConfigurationElementCollection : System.Configuration.ConfigurationElement, System.Collections.ICollection, System.Collections.IEnumerable + { + protected string AddElementName { get => throw null; set { } } + protected virtual void BaseAdd(System.Configuration.ConfigurationElement element) => throw null; + protected void BaseAdd(System.Configuration.ConfigurationElement element, bool throwIfExists) => throw null; + protected virtual void BaseAdd(int index, System.Configuration.ConfigurationElement element) => throw null; + protected void BaseClear() => throw null; + protected System.Configuration.ConfigurationElement BaseGet(object key) => throw null; + protected System.Configuration.ConfigurationElement BaseGet(int index) => throw null; + protected object[] BaseGetAllKeys() => throw null; + protected object BaseGetKey(int index) => throw null; + protected int BaseIndexOf(System.Configuration.ConfigurationElement element) => throw null; + protected bool BaseIsRemoved(object key) => throw null; + protected void BaseRemove(object key) => throw null; + protected void BaseRemoveAt(int index) => throw null; + protected string ClearElementName { get => throw null; set { } } + public virtual System.Configuration.ConfigurationElementCollectionType CollectionType { get => throw null; } + void System.Collections.ICollection.CopyTo(System.Array arr, int index) => throw null; + public void CopyTo(System.Configuration.ConfigurationElement[] array, int index) => throw null; + public int Count { get => throw null; } + protected virtual System.Configuration.ConfigurationElement CreateNewElement(string elementName) => throw null; + protected abstract System.Configuration.ConfigurationElement CreateNewElement(); + protected ConfigurationElementCollection() => throw null; + protected ConfigurationElementCollection(System.Collections.IComparer comparer) => throw null; + protected virtual string ElementName { get => throw null; } + public bool EmitClear { get => throw null; set { } } + public override bool Equals(object compareTo) => throw null; + protected abstract object GetElementKey(System.Configuration.ConfigurationElement element); + public System.Collections.IEnumerator GetEnumerator() => throw null; + public override int GetHashCode() => throw null; + protected virtual bool IsElementName(string elementName) => throw null; + protected virtual bool IsElementRemovable(System.Configuration.ConfigurationElement element) => throw null; + protected override bool IsModified() => throw null; + public override bool IsReadOnly() => throw null; + public bool IsSynchronized { get => throw null; } + protected override bool OnDeserializeUnrecognizedElement(string elementName, System.Xml.XmlReader reader) => throw null; + protected string RemoveElementName { get => throw null; set { } } + protected override void Reset(System.Configuration.ConfigurationElement parentElement) => throw null; + protected override void ResetModified() => throw null; + protected override bool SerializeElement(System.Xml.XmlWriter writer, bool serializeCollectionKey) => throw null; + protected override void SetReadOnly() => throw null; + public object SyncRoot { get => throw null; } + protected virtual bool ThrowOnDuplicate { get => throw null; } + protected override void Unmerge(System.Configuration.ConfigurationElement sourceElement, System.Configuration.ConfigurationElement parentElement, System.Configuration.ConfigurationSaveMode saveMode) => throw null; + } + public enum ConfigurationElementCollectionType + { + BasicMap = 0, + AddRemoveClearMap = 1, + BasicMapAlternate = 2, + AddRemoveClearMapAlternate = 3, + } + public sealed class ConfigurationElementProperty + { + public ConfigurationElementProperty(System.Configuration.ConfigurationValidatorBase validator) => throw null; + public System.Configuration.ConfigurationValidatorBase Validator { get => throw null; } + } + public class ConfigurationErrorsException : System.Configuration.ConfigurationException + { + public ConfigurationErrorsException(string message, System.Exception inner, string filename, int line) => throw null; + public ConfigurationErrorsException() => throw null; + public ConfigurationErrorsException(string message) => throw null; + public ConfigurationErrorsException(string message, System.Exception inner) => throw null; + public ConfigurationErrorsException(string message, string filename, int line) => throw null; + public ConfigurationErrorsException(string message, System.Xml.XmlNode node) => throw null; + public ConfigurationErrorsException(string message, System.Exception inner, System.Xml.XmlNode node) => throw null; + public ConfigurationErrorsException(string message, System.Xml.XmlReader reader) => throw null; + public ConfigurationErrorsException(string message, System.Exception inner, System.Xml.XmlReader reader) => throw null; + protected ConfigurationErrorsException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public System.Collections.ICollection Errors { get => throw null; } + public override string Filename { get => throw null; } + public static string GetFilename(System.Xml.XmlNode node) => throw null; + public static string GetFilename(System.Xml.XmlReader reader) => throw null; + public static int GetLineNumber(System.Xml.XmlNode node) => throw null; + public static int GetLineNumber(System.Xml.XmlReader reader) => throw null; + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public override int Line { get => throw null; } + public override string Message { get => throw null; } + } + public class ConfigurationException : System.SystemException + { + public virtual string BareMessage { get => throw null; } + protected ConfigurationException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public ConfigurationException() => throw null; + public ConfigurationException(string message) => throw null; + public ConfigurationException(string message, System.Exception inner) => throw null; + public ConfigurationException(string message, System.Xml.XmlNode node) => throw null; + public ConfigurationException(string message, System.Exception inner, System.Xml.XmlNode node) => throw null; + public ConfigurationException(string message, string filename, int line) => throw null; + public ConfigurationException(string message, System.Exception inner, string filename, int line) => throw null; + public virtual string Filename { get => throw null; } + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public static string GetXmlNodeFilename(System.Xml.XmlNode node) => throw null; + public static int GetXmlNodeLineNumber(System.Xml.XmlNode node) => throw null; + public virtual int Line { get => throw null; } + public override string Message { get => throw null; } + } + public class ConfigurationFileMap : System.ICloneable + { + public virtual object Clone() => throw null; + public ConfigurationFileMap() => throw null; + public ConfigurationFileMap(string machineConfigFilename) => throw null; + public string MachineConfigFilename { get => throw null; set { } } + } + public class ConfigurationLocation + { + public System.Configuration.Configuration OpenConfiguration() => throw null; + public string Path { get => throw null; } + } + public class ConfigurationLocationCollection : System.Collections.ReadOnlyCollectionBase + { + public System.Configuration.ConfigurationLocation this[int index] { get => throw null; } + } + public sealed class ConfigurationLockCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public void Add(string name) => throw null; + public string AttributeList { get => throw null; } + public void Clear() => throw null; + public bool Contains(string name) => throw null; + void System.Collections.ICollection.CopyTo(System.Array array, int index) => throw null; + public void CopyTo(string[] array, int index) => throw null; + public int Count { get => throw null; } + public System.Collections.IEnumerator GetEnumerator() => throw null; + public bool HasParentElements { get => throw null; } + public bool IsModified { get => throw null; } + public bool IsReadOnly(string name) => throw null; + public bool IsSynchronized { get => throw null; } + public void Remove(string name) => throw null; + public void SetFromList(string attributeList) => throw null; + public object SyncRoot { get => throw null; } + } + public static class ConfigurationManager + { + public static System.Collections.Specialized.NameValueCollection AppSettings { get => throw null; } + public static System.Configuration.ConnectionStringSettingsCollection ConnectionStrings { get => throw null; } + public static object GetSection(string sectionName) => throw null; + public static System.Configuration.Configuration OpenExeConfiguration(System.Configuration.ConfigurationUserLevel userLevel) => throw null; + public static System.Configuration.Configuration OpenExeConfiguration(string exePath) => throw null; + public static System.Configuration.Configuration OpenMachineConfiguration() => throw null; + public static System.Configuration.Configuration OpenMappedExeConfiguration(System.Configuration.ExeConfigurationFileMap fileMap, System.Configuration.ConfigurationUserLevel userLevel) => throw null; + public static System.Configuration.Configuration OpenMappedExeConfiguration(System.Configuration.ExeConfigurationFileMap fileMap, System.Configuration.ConfigurationUserLevel userLevel, bool preLoad) => throw null; + public static System.Configuration.Configuration OpenMappedMachineConfiguration(System.Configuration.ConfigurationFileMap fileMap) => throw null; + public static void RefreshSection(string sectionName) => throw null; + } + public sealed class ConfigurationProperty + { + public System.ComponentModel.TypeConverter Converter { get => throw null; } + public ConfigurationProperty(string name, System.Type type) => throw null; + public ConfigurationProperty(string name, System.Type type, object defaultValue) => throw null; + public ConfigurationProperty(string name, System.Type type, object defaultValue, System.Configuration.ConfigurationPropertyOptions options) => throw null; + public ConfigurationProperty(string name, System.Type type, object defaultValue, System.ComponentModel.TypeConverter typeConverter, System.Configuration.ConfigurationValidatorBase validator, System.Configuration.ConfigurationPropertyOptions options) => throw null; + public ConfigurationProperty(string name, System.Type type, object defaultValue, System.ComponentModel.TypeConverter typeConverter, System.Configuration.ConfigurationValidatorBase validator, System.Configuration.ConfigurationPropertyOptions options, string description) => throw null; + public object DefaultValue { get => throw null; } + public string Description { get => throw null; } + public bool IsAssemblyStringTransformationRequired { get => throw null; } + public bool IsDefaultCollection { get => throw null; } + public bool IsKey { get => throw null; } + public bool IsRequired { get => throw null; } + public bool IsTypeStringTransformationRequired { get => throw null; } + public bool IsVersionCheckRequired { get => throw null; } + public string Name { get => throw null; } + public System.Type Type { get => throw null; } + public System.Configuration.ConfigurationValidatorBase Validator { get => throw null; } + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class ConfigurationPropertyAttribute : System.Attribute + { + public ConfigurationPropertyAttribute(string name) => throw null; + public object DefaultValue { get => throw null; set { } } + public bool IsDefaultCollection { get => throw null; set { } } + public bool IsKey { get => throw null; set { } } + public bool IsRequired { get => throw null; set { } } + public string Name { get => throw null; } + public System.Configuration.ConfigurationPropertyOptions Options { get => throw null; set { } } + } + public class ConfigurationPropertyCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public void Add(System.Configuration.ConfigurationProperty property) => throw null; + public void Clear() => throw null; + public bool Contains(string name) => throw null; + void System.Collections.ICollection.CopyTo(System.Array array, int index) => throw null; + public void CopyTo(System.Configuration.ConfigurationProperty[] array, int index) => throw null; + public int Count { get => throw null; } + public ConfigurationPropertyCollection() => throw null; + public System.Collections.IEnumerator GetEnumerator() => throw null; + public bool IsSynchronized { get => throw null; } + public bool Remove(string name) => throw null; + public object SyncRoot { get => throw null; } + public System.Configuration.ConfigurationProperty this[string name] { get => throw null; } + } + [System.Flags] + public enum ConfigurationPropertyOptions + { + None = 0, + IsDefaultCollection = 1, + IsRequired = 2, + IsKey = 4, + IsTypeStringTransformationRequired = 8, + IsAssemblyStringTransformationRequired = 16, + IsVersionCheckRequired = 32, + } + public enum ConfigurationSaveMode + { + Modified = 0, + Minimal = 1, + Full = 2, + } + public abstract class ConfigurationSection : System.Configuration.ConfigurationElement + { + protected ConfigurationSection() => throw null; + protected virtual void DeserializeSection(System.Xml.XmlReader reader) => throw null; + protected virtual object GetRuntimeObject() => throw null; + protected override bool IsModified() => throw null; + protected override void ResetModified() => throw null; + public System.Configuration.SectionInformation SectionInformation { get => throw null; } + protected virtual string SerializeSection(System.Configuration.ConfigurationElement parentElement, string name, System.Configuration.ConfigurationSaveMode saveMode) => throw null; + protected virtual bool ShouldSerializeElementInTargetVersion(System.Configuration.ConfigurationElement element, string elementName, System.Runtime.Versioning.FrameworkName targetFramework) => throw null; + protected virtual bool ShouldSerializePropertyInTargetVersion(System.Configuration.ConfigurationProperty property, string propertyName, System.Runtime.Versioning.FrameworkName targetFramework, System.Configuration.ConfigurationElement parentConfigurationElement) => throw null; + protected virtual bool ShouldSerializeSectionInTargetVersion(System.Runtime.Versioning.FrameworkName targetFramework) => throw null; + } + public sealed class ConfigurationSectionCollection : System.Collections.Specialized.NameObjectCollectionBase + { + public void Add(string name, System.Configuration.ConfigurationSection section) => throw null; + public void Clear() => throw null; + public void CopyTo(System.Configuration.ConfigurationSection[] array, int index) => throw null; + public System.Configuration.ConfigurationSection Get(int index) => throw null; + public System.Configuration.ConfigurationSection Get(string name) => throw null; + public override System.Collections.IEnumerator GetEnumerator() => throw null; + public string GetKey(int index) => throw null; + public void Remove(string name) => throw null; + public void RemoveAt(int index) => throw null; + public System.Configuration.ConfigurationSection this[string name] { get => throw null; } + public System.Configuration.ConfigurationSection this[int index] { get => throw null; } + } + public class ConfigurationSectionGroup + { + public ConfigurationSectionGroup() => throw null; + public void ForceDeclaration() => throw null; + public void ForceDeclaration(bool force) => throw null; + public bool IsDeclarationRequired { get => throw null; } + public bool IsDeclared { get => throw null; } + public string Name { get => throw null; } + public string SectionGroupName { get => throw null; } + public System.Configuration.ConfigurationSectionGroupCollection SectionGroups { get => throw null; } + public System.Configuration.ConfigurationSectionCollection Sections { get => throw null; } + protected virtual bool ShouldSerializeSectionGroupInTargetVersion(System.Runtime.Versioning.FrameworkName targetFramework) => throw null; + public string Type { get => throw null; set { } } + } + public sealed class ConfigurationSectionGroupCollection : System.Collections.Specialized.NameObjectCollectionBase + { + public void Add(string name, System.Configuration.ConfigurationSectionGroup sectionGroup) => throw null; + public void Clear() => throw null; + public void CopyTo(System.Configuration.ConfigurationSectionGroup[] array, int index) => throw null; + public System.Configuration.ConfigurationSectionGroup Get(int index) => throw null; + public System.Configuration.ConfigurationSectionGroup Get(string name) => throw null; + public override System.Collections.IEnumerator GetEnumerator() => throw null; + public string GetKey(int index) => throw null; + public void Remove(string name) => throw null; + public void RemoveAt(int index) => throw null; + public System.Configuration.ConfigurationSectionGroup this[string name] { get => throw null; } + public System.Configuration.ConfigurationSectionGroup this[int index] { get => throw null; } + } + public sealed class ConfigurationSettings + { + public static System.Collections.Specialized.NameValueCollection AppSettings { get => throw null; } + public static object GetConfig(string sectionName) => throw null; + } + public enum ConfigurationUserLevel + { + None = 0, + PerUserRoaming = 10, + PerUserRoamingAndLocal = 20, + } + [System.AttributeUsage((System.AttributeTargets)128)] + public class ConfigurationValidatorAttribute : System.Attribute + { + protected ConfigurationValidatorAttribute() => throw null; + public ConfigurationValidatorAttribute(System.Type validator) => throw null; + public virtual System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + public System.Type ValidatorType { get => throw null; } + } + public abstract class ConfigurationValidatorBase + { + public virtual bool CanValidate(System.Type type) => throw null; + protected ConfigurationValidatorBase() => throw null; + public abstract void Validate(object value); + } + public sealed class ConfigXmlDocument : System.Xml.XmlDocument, System.Configuration.Internal.IConfigErrorInfo + { + public override System.Xml.XmlAttribute CreateAttribute(string prefix, string localName, string namespaceUri) => throw null; + public override System.Xml.XmlCDataSection CreateCDataSection(string data) => throw null; + public override System.Xml.XmlComment CreateComment(string data) => throw null; + public override System.Xml.XmlElement CreateElement(string prefix, string localName, string namespaceUri) => throw null; + public override System.Xml.XmlSignificantWhitespace CreateSignificantWhitespace(string data) => throw null; + public override System.Xml.XmlText CreateTextNode(string text) => throw null; + public override System.Xml.XmlWhitespace CreateWhitespace(string data) => throw null; + public ConfigXmlDocument() => throw null; + public string Filename { get => throw null; } + string System.Configuration.Internal.IConfigErrorInfo.Filename { get => throw null; } + int System.Configuration.Internal.IConfigErrorInfo.LineNumber { get => throw null; } + public int LineNumber { get => throw null; } + public override void Load(string filename) => throw null; + public void LoadSingleElement(string filename, System.Xml.XmlTextReader sourceReader) => throw null; + } + public sealed class ConnectionStringSettings : System.Configuration.ConfigurationElement + { + public string ConnectionString { get => throw null; set { } } + public ConnectionStringSettings() => throw null; + public ConnectionStringSettings(string name, string connectionString) => throw null; + public ConnectionStringSettings(string name, string connectionString, string providerName) => throw null; + public string Name { get => throw null; set { } } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public string ProviderName { get => throw null; set { } } + public override string ToString() => throw null; + } + public sealed class ConnectionStringSettingsCollection : System.Configuration.ConfigurationElementCollection + { + public void Add(System.Configuration.ConnectionStringSettings settings) => throw null; + protected override void BaseAdd(int index, System.Configuration.ConfigurationElement element) => throw null; + public void Clear() => throw null; + protected override System.Configuration.ConfigurationElement CreateNewElement() => throw null; + public ConnectionStringSettingsCollection() => throw null; + protected override object GetElementKey(System.Configuration.ConfigurationElement element) => throw null; + public int IndexOf(System.Configuration.ConnectionStringSettings settings) => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public void Remove(System.Configuration.ConnectionStringSettings settings) => throw null; + public void Remove(string name) => throw null; + public void RemoveAt(int index) => throw null; + public System.Configuration.ConnectionStringSettings this[int index] { get => throw null; set { } } + public System.Configuration.ConnectionStringSettings this[string name] { get => throw null; } + } + public sealed class ConnectionStringsSection : System.Configuration.ConfigurationSection + { + public System.Configuration.ConnectionStringSettingsCollection ConnectionStrings { get => throw null; } + public ConnectionStringsSection() => throw null; + protected override object GetRuntimeObject() => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + } + public sealed class ContextInformation + { + public object GetSection(string sectionName) => throw null; + public object HostingContext { get => throw null; } + public bool IsMachineLevel { get => throw null; } + } + public sealed class DefaultSection : System.Configuration.ConfigurationSection + { + public DefaultSection() => throw null; + protected override void DeserializeSection(System.Xml.XmlReader xmlReader) => throw null; + protected override bool IsModified() => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + protected override void Reset(System.Configuration.ConfigurationElement parentSection) => throw null; + protected override void ResetModified() => throw null; + protected override string SerializeSection(System.Configuration.ConfigurationElement parentSection, string name, System.Configuration.ConfigurationSaveMode saveMode) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class DefaultSettingValueAttribute : System.Attribute + { + public DefaultSettingValueAttribute(string value) => throw null; + public string Value { get => throw null; } + } + public sealed class DefaultValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public DefaultValidator() => throw null; + public override void Validate(object value) => throw null; + } + public class DictionarySectionHandler : System.Configuration.IConfigurationSectionHandler + { + public virtual object Create(object parent, object context, System.Xml.XmlNode section) => throw null; + public DictionarySectionHandler() => throw null; + protected virtual string KeyAttributeName { get => throw null; } + protected virtual string ValueAttributeName { get => throw null; } + } + public sealed class DpapiProtectedConfigurationProvider : System.Configuration.ProtectedConfigurationProvider + { + public DpapiProtectedConfigurationProvider() => throw null; + public override System.Xml.XmlNode Decrypt(System.Xml.XmlNode encryptedNode) => throw null; + public override System.Xml.XmlNode Encrypt(System.Xml.XmlNode node) => throw null; + public override void Initialize(string name, System.Collections.Specialized.NameValueCollection configurationValues) => throw null; + public bool UseMachineProtection { get => throw null; } + } + public sealed class ElementInformation + { + public System.Collections.ICollection Errors { get => throw null; } + public bool IsCollection { get => throw null; } + public bool IsLocked { get => throw null; } + public bool IsPresent { get => throw null; } + public int LineNumber { get => throw null; } + public System.Configuration.PropertyInformationCollection Properties { get => throw null; } + public string Source { get => throw null; } + public System.Type Type { get => throw null; } + public System.Configuration.ConfigurationValidatorBase Validator { get => throw null; } + } + public sealed class ExeConfigurationFileMap : System.Configuration.ConfigurationFileMap + { + public override object Clone() => throw null; + public ExeConfigurationFileMap() => throw null; + public ExeConfigurationFileMap(string machineConfigFileName) => throw null; + public string ExeConfigFilename { get => throw null; set { } } + public string LocalUserConfigFilename { get => throw null; set { } } + public string RoamingUserConfigFilename { get => throw null; set { } } + } + public sealed class ExeContext + { + public string ExePath { get => throw null; } + public System.Configuration.ConfigurationUserLevel UserLevel { get => throw null; } + } + public sealed class GenericEnumConverter : System.Configuration.ConfigurationConverterBase + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public GenericEnumConverter(System.Type typeEnum) => throw null; + } + public interface IApplicationSettingsProvider + { + System.Configuration.SettingsPropertyValue GetPreviousVersion(System.Configuration.SettingsContext context, System.Configuration.SettingsProperty property); + void Reset(System.Configuration.SettingsContext context); + void Upgrade(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection properties); + } + public interface IConfigurationSectionHandler + { + object Create(object parent, object configContext, System.Xml.XmlNode section); + } + public interface IConfigurationSystem + { + object GetConfig(string configKey); + void Init(); + } + public sealed class IdnElement : System.Configuration.ConfigurationElement + { + public IdnElement() => throw null; + public System.UriIdnScope Enabled { get => throw null; set { } } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + } + public sealed class IgnoreSection : System.Configuration.ConfigurationSection + { + public IgnoreSection() => throw null; + protected override void DeserializeSection(System.Xml.XmlReader xmlReader) => throw null; + protected override bool IsModified() => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + protected override void Reset(System.Configuration.ConfigurationElement parentSection) => throw null; + protected override void ResetModified() => throw null; + protected override string SerializeSection(System.Configuration.ConfigurationElement parentSection, string name, System.Configuration.ConfigurationSaveMode saveMode) => throw null; + } + public class IgnoreSectionHandler : System.Configuration.IConfigurationSectionHandler + { + public virtual object Create(object parent, object configContext, System.Xml.XmlNode section) => throw null; + public IgnoreSectionHandler() => throw null; + } + public sealed class InfiniteIntConverter : System.Configuration.ConfigurationConverterBase + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public InfiniteIntConverter() => throw null; + } + public sealed class InfiniteTimeSpanConverter : System.Configuration.ConfigurationConverterBase + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public InfiniteTimeSpanConverter() => throw null; + } + public class IntegerValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public IntegerValidator(int minValue, int maxValue) => throw null; + public IntegerValidator(int minValue, int maxValue, bool rangeIsExclusive) => throw null; + public IntegerValidator(int minValue, int maxValue, bool rangeIsExclusive, int resolution) => throw null; + public override void Validate(object value) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class IntegerValidatorAttribute : System.Configuration.ConfigurationValidatorAttribute + { + public IntegerValidatorAttribute() => throw null; + public bool ExcludeRange { get => throw null; set { } } + public int MaxValue { get => throw null; set { } } + public int MinValue { get => throw null; set { } } + public override System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + } + namespace Internal + { + public class DelegatingConfigHost : System.Configuration.Internal.IInternalConfigHost + { + public virtual object CreateConfigurationContext(string configPath, string locationSubPath) => throw null; + public virtual object CreateDeprecatedConfigContext(string configPath) => throw null; + protected DelegatingConfigHost() => throw null; + public virtual string DecryptSection(string encryptedXml, System.Configuration.ProtectedConfigurationProvider protectionProvider, System.Configuration.ProtectedConfigurationSection protectedConfigSection) => throw null; + public virtual void DeleteStream(string streamName) => throw null; + public virtual string EncryptSection(string clearTextXml, System.Configuration.ProtectedConfigurationProvider protectionProvider, System.Configuration.ProtectedConfigurationSection protectedConfigSection) => throw null; + public virtual string GetConfigPathFromLocationSubPath(string configPath, string locationSubPath) => throw null; + public virtual System.Type GetConfigType(string typeName, bool throwOnError) => throw null; + public virtual string GetConfigTypeName(System.Type t) => throw null; + public virtual void GetRestrictedPermissions(System.Configuration.Internal.IInternalConfigRecord configRecord, out System.Security.PermissionSet permissionSet, out bool isHostReady) => throw null; + public virtual string GetStreamName(string configPath) => throw null; + public virtual string GetStreamNameForConfigSource(string streamName, string configSource) => throw null; + public virtual object GetStreamVersion(string streamName) => throw null; + public virtual bool HasLocalConfig { get => throw null; } + public virtual bool HasRoamingConfig { get => throw null; } + protected System.Configuration.Internal.IInternalConfigHost Host { get => throw null; set { } } + public virtual System.IDisposable Impersonate() => throw null; + public virtual void Init(System.Configuration.Internal.IInternalConfigRoot configRoot, params object[] hostInitParams) => throw null; + public virtual void InitForConfiguration(ref string locationSubPath, out string configPath, out string locationConfigPath, System.Configuration.Internal.IInternalConfigRoot configRoot, params object[] hostInitConfigurationParams) => throw null; + public virtual bool IsAboveApplication(string configPath) => throw null; + public virtual bool IsAppConfigHttp { get => throw null; } + public virtual bool IsConfigRecordRequired(string configPath) => throw null; + public virtual bool IsDefinitionAllowed(string configPath, System.Configuration.ConfigurationAllowDefinition allowDefinition, System.Configuration.ConfigurationAllowExeDefinition allowExeDefinition) => throw null; + public virtual bool IsFile(string streamName) => throw null; + public virtual bool IsFullTrustSectionWithoutAptcaAllowed(System.Configuration.Internal.IInternalConfigRecord configRecord) => throw null; + public virtual bool IsInitDelayed(System.Configuration.Internal.IInternalConfigRecord configRecord) => throw null; + public virtual bool IsLocationApplicable(string configPath) => throw null; + public virtual bool IsRemote { get => throw null; } + public virtual bool IsSecondaryRoot(string configPath) => throw null; + public virtual bool IsTrustedConfigPath(string configPath) => throw null; + public virtual System.IO.Stream OpenStreamForRead(string streamName) => throw null; + public virtual System.IO.Stream OpenStreamForRead(string streamName, bool assertPermissions) => throw null; + public virtual System.IO.Stream OpenStreamForWrite(string streamName, string templateStreamName, ref object writeContext) => throw null; + public virtual System.IO.Stream OpenStreamForWrite(string streamName, string templateStreamName, ref object writeContext, bool assertPermissions) => throw null; + public virtual bool PrefetchAll(string configPath, string streamName) => throw null; + public virtual bool PrefetchSection(string sectionGroupName, string sectionName) => throw null; + public virtual void RefreshConfigPaths() => throw null; + public virtual void RequireCompleteInit(System.Configuration.Internal.IInternalConfigRecord configRecord) => throw null; + public virtual object StartMonitoringStreamForChanges(string streamName, System.Configuration.Internal.StreamChangeCallback callback) => throw null; + public virtual void StopMonitoringStreamForChanges(string streamName, System.Configuration.Internal.StreamChangeCallback callback) => throw null; + public virtual bool SupportsChangeNotifications { get => throw null; } + public virtual bool SupportsLocation { get => throw null; } + public virtual bool SupportsPath { get => throw null; } + public virtual bool SupportsRefresh { get => throw null; } + public virtual void VerifyDefinitionAllowed(string configPath, System.Configuration.ConfigurationAllowDefinition allowDefinition, System.Configuration.ConfigurationAllowExeDefinition allowExeDefinition, System.Configuration.Internal.IConfigErrorInfo errorInfo) => throw null; + public virtual void WriteCompleted(string streamName, bool success, object writeContext) => throw null; + public virtual void WriteCompleted(string streamName, bool success, object writeContext, bool assertPermissions) => throw null; + } + public interface IConfigErrorInfo + { + string Filename { get; } + int LineNumber { get; } + } + public interface IConfigSystem + { + System.Configuration.Internal.IInternalConfigHost Host { get; } + void Init(System.Type typeConfigHost, params object[] hostInitParams); + System.Configuration.Internal.IInternalConfigRoot Root { get; } + } + public interface IConfigurationManagerHelper + { + void EnsureNetConfigLoaded(); + } + public interface IConfigurationManagerInternal + { + string ApplicationConfigUri { get; } + string ExeLocalConfigDirectory { get; } + string ExeLocalConfigPath { get; } + string ExeProductName { get; } + string ExeProductVersion { get; } + string ExeRoamingConfigDirectory { get; } + string ExeRoamingConfigPath { get; } + string MachineConfigPath { get; } + bool SetConfigurationSystemInProgress { get; } + bool SupportsUserConfig { get; } + string UserConfigFilename { get; } + } + public interface IInternalConfigClientHost + { + string GetExeConfigPath(); + string GetLocalUserConfigPath(); + string GetRoamingUserConfigPath(); + bool IsExeConfig(string configPath); + bool IsLocalUserConfig(string configPath); + bool IsRoamingUserConfig(string configPath); + } + public interface IInternalConfigConfigurationFactory + { + System.Configuration.Configuration Create(System.Type typeConfigHost, params object[] hostInitConfigurationParams); + string NormalizeLocationSubPath(string subPath, System.Configuration.Internal.IConfigErrorInfo errorInfo); + } + public interface IInternalConfigHost + { + object CreateConfigurationContext(string configPath, string locationSubPath); + object CreateDeprecatedConfigContext(string configPath); + string DecryptSection(string encryptedXml, System.Configuration.ProtectedConfigurationProvider protectionProvider, System.Configuration.ProtectedConfigurationSection protectedConfigSection); + void DeleteStream(string streamName); + string EncryptSection(string clearTextXml, System.Configuration.ProtectedConfigurationProvider protectionProvider, System.Configuration.ProtectedConfigurationSection protectedConfigSection); + string GetConfigPathFromLocationSubPath(string configPath, string locationSubPath); + System.Type GetConfigType(string typeName, bool throwOnError); + string GetConfigTypeName(System.Type t); + void GetRestrictedPermissions(System.Configuration.Internal.IInternalConfigRecord configRecord, out System.Security.PermissionSet permissionSet, out bool isHostReady); + string GetStreamName(string configPath); + string GetStreamNameForConfigSource(string streamName, string configSource); + object GetStreamVersion(string streamName); + System.IDisposable Impersonate(); + void Init(System.Configuration.Internal.IInternalConfigRoot configRoot, params object[] hostInitParams); + void InitForConfiguration(ref string locationSubPath, out string configPath, out string locationConfigPath, System.Configuration.Internal.IInternalConfigRoot configRoot, params object[] hostInitConfigurationParams); + bool IsAboveApplication(string configPath); + bool IsConfigRecordRequired(string configPath); + bool IsDefinitionAllowed(string configPath, System.Configuration.ConfigurationAllowDefinition allowDefinition, System.Configuration.ConfigurationAllowExeDefinition allowExeDefinition); + bool IsFile(string streamName); + bool IsFullTrustSectionWithoutAptcaAllowed(System.Configuration.Internal.IInternalConfigRecord configRecord); + bool IsInitDelayed(System.Configuration.Internal.IInternalConfigRecord configRecord); + bool IsLocationApplicable(string configPath); + bool IsRemote { get; } + bool IsSecondaryRoot(string configPath); + bool IsTrustedConfigPath(string configPath); + System.IO.Stream OpenStreamForRead(string streamName); + System.IO.Stream OpenStreamForRead(string streamName, bool assertPermissions); + System.IO.Stream OpenStreamForWrite(string streamName, string templateStreamName, ref object writeContext); + System.IO.Stream OpenStreamForWrite(string streamName, string templateStreamName, ref object writeContext, bool assertPermissions); + bool PrefetchAll(string configPath, string streamName); + bool PrefetchSection(string sectionGroupName, string sectionName); + void RequireCompleteInit(System.Configuration.Internal.IInternalConfigRecord configRecord); + object StartMonitoringStreamForChanges(string streamName, System.Configuration.Internal.StreamChangeCallback callback); + void StopMonitoringStreamForChanges(string streamName, System.Configuration.Internal.StreamChangeCallback callback); + bool SupportsChangeNotifications { get; } + bool SupportsLocation { get; } + bool SupportsPath { get; } + bool SupportsRefresh { get; } + void VerifyDefinitionAllowed(string configPath, System.Configuration.ConfigurationAllowDefinition allowDefinition, System.Configuration.ConfigurationAllowExeDefinition allowExeDefinition, System.Configuration.Internal.IConfigErrorInfo errorInfo); + void WriteCompleted(string streamName, bool success, object writeContext); + void WriteCompleted(string streamName, bool success, object writeContext, bool assertPermissions); + } + public interface IInternalConfigRecord + { + string ConfigPath { get; } + object GetLkgSection(string configKey); + object GetSection(string configKey); + bool HasInitErrors { get; } + void RefreshSection(string configKey); + void Remove(); + string StreamName { get; } + void ThrowIfInitErrors(); + } + public interface IInternalConfigRoot + { + event System.Configuration.Internal.InternalConfigEventHandler ConfigChanged; + event System.Configuration.Internal.InternalConfigEventHandler ConfigRemoved; + System.Configuration.Internal.IInternalConfigRecord GetConfigRecord(string configPath); + object GetSection(string section, string configPath); + string GetUniqueConfigPath(string configPath); + System.Configuration.Internal.IInternalConfigRecord GetUniqueConfigRecord(string configPath); + void Init(System.Configuration.Internal.IInternalConfigHost host, bool isDesignTime); + bool IsDesignTime { get; } + void RemoveConfig(string configPath); + } + public interface IInternalConfigSettingsFactory + { + void CompleteInit(); + void SetConfigurationSystem(System.Configuration.Internal.IInternalConfigSystem internalConfigSystem, bool initComplete); + } + public interface IInternalConfigSystem + { + object GetSection(string configKey); + void RefreshConfig(string sectionName); + bool SupportsUserConfig { get; } + } + public sealed class InternalConfigEventArgs : System.EventArgs + { + public string ConfigPath { get => throw null; set { } } + public InternalConfigEventArgs(string configPath) => throw null; + } + public delegate void InternalConfigEventHandler(object sender, System.Configuration.Internal.InternalConfigEventArgs e); + public delegate void StreamChangeCallback(string streamName); + } + public interface IPersistComponentSettings + { + void LoadComponentSettings(); + void ResetComponentSettings(); + void SaveComponentSettings(); + bool SaveSettings { get; set; } + string SettingsKey { get; set; } + } + public sealed class IriParsingElement : System.Configuration.ConfigurationElement + { + public IriParsingElement() => throw null; + public bool Enabled { get => throw null; set { } } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + } + public interface ISettingsProviderService + { + System.Configuration.SettingsProvider GetSettingsProvider(System.Configuration.SettingsProperty property); + } + public class KeyValueConfigurationCollection : System.Configuration.ConfigurationElementCollection + { + public void Add(System.Configuration.KeyValueConfigurationElement keyValue) => throw null; + public void Add(string key, string value) => throw null; + public string[] AllKeys { get => throw null; } + public void Clear() => throw null; + protected override System.Configuration.ConfigurationElement CreateNewElement() => throw null; + public KeyValueConfigurationCollection() => throw null; + protected override object GetElementKey(System.Configuration.ConfigurationElement element) => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public void Remove(string key) => throw null; + public System.Configuration.KeyValueConfigurationElement this[string key] { get => throw null; } + protected override bool ThrowOnDuplicate { get => throw null; } + } + public class KeyValueConfigurationElement : System.Configuration.ConfigurationElement + { + public KeyValueConfigurationElement(string key, string value) => throw null; + protected override void Init() => throw null; + public string Key { get => throw null; } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public string Value { get => throw null; set { } } + } + public class LocalFileSettingsProvider : System.Configuration.SettingsProvider, System.Configuration.IApplicationSettingsProvider + { + public override string ApplicationName { get => throw null; set { } } + public LocalFileSettingsProvider() => throw null; + public System.Configuration.SettingsPropertyValue GetPreviousVersion(System.Configuration.SettingsContext context, System.Configuration.SettingsProperty property) => throw null; + public override System.Configuration.SettingsPropertyValueCollection GetPropertyValues(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection properties) => throw null; + public override void Initialize(string name, System.Collections.Specialized.NameValueCollection values) => throw null; + public void Reset(System.Configuration.SettingsContext context) => throw null; + public override void SetPropertyValues(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyValueCollection values) => throw null; + public void Upgrade(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection properties) => throw null; + } + public class LongValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public LongValidator(long minValue, long maxValue) => throw null; + public LongValidator(long minValue, long maxValue, bool rangeIsExclusive) => throw null; + public LongValidator(long minValue, long maxValue, bool rangeIsExclusive, long resolution) => throw null; + public override void Validate(object value) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class LongValidatorAttribute : System.Configuration.ConfigurationValidatorAttribute + { + public LongValidatorAttribute() => throw null; + public bool ExcludeRange { get => throw null; set { } } + public long MaxValue { get => throw null; set { } } + public long MinValue { get => throw null; set { } } + public override System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + } + public sealed class NameValueConfigurationCollection : System.Configuration.ConfigurationElementCollection + { + public void Add(System.Configuration.NameValueConfigurationElement nameValue) => throw null; + public string[] AllKeys { get => throw null; } + public void Clear() => throw null; + protected override System.Configuration.ConfigurationElement CreateNewElement() => throw null; + public NameValueConfigurationCollection() => throw null; + protected override object GetElementKey(System.Configuration.ConfigurationElement element) => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public void Remove(System.Configuration.NameValueConfigurationElement nameValue) => throw null; + public void Remove(string name) => throw null; + public System.Configuration.NameValueConfigurationElement this[string name] { get => throw null; set { } } + } + public sealed class NameValueConfigurationElement : System.Configuration.ConfigurationElement + { + public NameValueConfigurationElement(string name, string value) => throw null; + public string Name { get => throw null; } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public string Value { get => throw null; set { } } + } + public class NameValueFileSectionHandler : System.Configuration.IConfigurationSectionHandler + { + public object Create(object parent, object configContext, System.Xml.XmlNode section) => throw null; + public NameValueFileSectionHandler() => throw null; + } + public class NameValueSectionHandler : System.Configuration.IConfigurationSectionHandler + { + public object Create(object parent, object context, System.Xml.XmlNode section) => throw null; + public NameValueSectionHandler() => throw null; + protected virtual string KeyAttributeName { get => throw null; } + protected virtual string ValueAttributeName { get => throw null; } + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class NoSettingsVersionUpgradeAttribute : System.Attribute + { + public NoSettingsVersionUpgradeAttribute() => throw null; + } + public enum OverrideMode + { + Inherit = 0, + Allow = 1, + Deny = 2, + } + public class PositiveTimeSpanValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public PositiveTimeSpanValidator() => throw null; + public override void Validate(object value) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class PositiveTimeSpanValidatorAttribute : System.Configuration.ConfigurationValidatorAttribute + { + public PositiveTimeSpanValidatorAttribute() => throw null; + public override System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + } + public sealed class PropertyInformation + { + public System.ComponentModel.TypeConverter Converter { get => throw null; } + public object DefaultValue { get => throw null; } + public string Description { get => throw null; } + public bool IsKey { get => throw null; } + public bool IsLocked { get => throw null; } + public bool IsModified { get => throw null; } + public bool IsRequired { get => throw null; } + public int LineNumber { get => throw null; } + public string Name { get => throw null; } + public string Source { get => throw null; } + public System.Type Type { get => throw null; } + public System.Configuration.ConfigurationValidatorBase Validator { get => throw null; } + public object Value { get => throw null; set { } } + public System.Configuration.PropertyValueOrigin ValueOrigin { get => throw null; } + } + public sealed class PropertyInformationCollection : System.Collections.Specialized.NameObjectCollectionBase + { + public void CopyTo(System.Configuration.PropertyInformation[] array, int index) => throw null; + public override System.Collections.IEnumerator GetEnumerator() => throw null; + public System.Configuration.PropertyInformation this[string propertyName] { get => throw null; } + } + public enum PropertyValueOrigin + { + Default = 0, + Inherited = 1, + SetHere = 2, + } + public static class ProtectedConfiguration + { + public const string DataProtectionProviderName = default; + public static string DefaultProvider { get => throw null; } + public const string ProtectedDataSectionName = default; + public static System.Configuration.ProtectedConfigurationProviderCollection Providers { get => throw null; } + public const string RsaProviderName = default; + } + public abstract class ProtectedConfigurationProvider : System.Configuration.Provider.ProviderBase + { + protected ProtectedConfigurationProvider() => throw null; + public abstract System.Xml.XmlNode Decrypt(System.Xml.XmlNode encryptedNode); + public abstract System.Xml.XmlNode Encrypt(System.Xml.XmlNode node); + } + public class ProtectedConfigurationProviderCollection : System.Configuration.Provider.ProviderCollection + { + public override void Add(System.Configuration.Provider.ProviderBase provider) => throw null; + public ProtectedConfigurationProviderCollection() => throw null; + public System.Configuration.ProtectedConfigurationProvider this[string name] { get => throw null; } + } + public sealed class ProtectedConfigurationSection : System.Configuration.ConfigurationSection + { + public ProtectedConfigurationSection() => throw null; + public string DefaultProvider { get => throw null; set { } } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public System.Configuration.ProviderSettingsCollection Providers { get => throw null; } + } + public class ProtectedProviderSettings : System.Configuration.ConfigurationElement + { + public ProtectedProviderSettings() => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public System.Configuration.ProviderSettingsCollection Providers { get => throw null; } + } + namespace Provider + { + public abstract class ProviderBase + { + protected ProviderBase() => throw null; + public virtual string Description { get => throw null; } + public virtual void Initialize(string name, System.Collections.Specialized.NameValueCollection config) => throw null; + public virtual string Name { get => throw null; } + } + public class ProviderCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public virtual void Add(System.Configuration.Provider.ProviderBase provider) => throw null; + public void Clear() => throw null; + void System.Collections.ICollection.CopyTo(System.Array array, int index) => throw null; + public void CopyTo(System.Configuration.Provider.ProviderBase[] array, int index) => throw null; + public int Count { get => throw null; } + public ProviderCollection() => throw null; + public System.Collections.IEnumerator GetEnumerator() => throw null; + public bool IsSynchronized { get => throw null; } + public void Remove(string name) => throw null; + public void SetReadOnly() => throw null; + public object SyncRoot { get => throw null; } + public System.Configuration.Provider.ProviderBase this[string name] { get => throw null; } + } + public class ProviderException : System.Exception + { + public ProviderException() => throw null; + public ProviderException(string message) => throw null; + public ProviderException(string message, System.Exception innerException) => throw null; + protected ProviderException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + } + } + public sealed class ProviderSettings : System.Configuration.ConfigurationElement + { + public ProviderSettings() => throw null; + public ProviderSettings(string name, string type) => throw null; + protected override bool IsModified() => throw null; + public string Name { get => throw null; set { } } + protected override bool OnDeserializeUnrecognizedAttribute(string name, string value) => throw null; + public System.Collections.Specialized.NameValueCollection Parameters { get => throw null; } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + protected override void Reset(System.Configuration.ConfigurationElement parentElement) => throw null; + public string Type { get => throw null; set { } } + protected override void Unmerge(System.Configuration.ConfigurationElement sourceElement, System.Configuration.ConfigurationElement parentElement, System.Configuration.ConfigurationSaveMode saveMode) => throw null; + } + public sealed class ProviderSettingsCollection : System.Configuration.ConfigurationElementCollection + { + public void Add(System.Configuration.ProviderSettings provider) => throw null; + public void Clear() => throw null; + protected override System.Configuration.ConfigurationElement CreateNewElement() => throw null; + public ProviderSettingsCollection() => throw null; + protected override object GetElementKey(System.Configuration.ConfigurationElement element) => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public void Remove(string name) => throw null; + public System.Configuration.ProviderSettings this[string key] { get => throw null; } + public System.Configuration.ProviderSettings this[int index] { get => throw null; set { } } + } + public class RegexStringValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public RegexStringValidator(string regex) => throw null; + public override void Validate(object value) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class RegexStringValidatorAttribute : System.Configuration.ConfigurationValidatorAttribute + { + public RegexStringValidatorAttribute(string regex) => throw null; + public string Regex { get => throw null; } + public override System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + } + public sealed class RsaProtectedConfigurationProvider : System.Configuration.ProtectedConfigurationProvider + { + public void AddKey(int keySize, bool exportable) => throw null; + public string CspProviderName { get => throw null; } + public RsaProtectedConfigurationProvider() => throw null; + public override System.Xml.XmlNode Decrypt(System.Xml.XmlNode encryptedNode) => throw null; + public void DeleteKey() => throw null; + public override System.Xml.XmlNode Encrypt(System.Xml.XmlNode node) => throw null; + public void ExportKey(string xmlFileName, bool includePrivateParameters) => throw null; + public void ImportKey(string xmlFileName, bool exportable) => throw null; + public string KeyContainerName { get => throw null; } + public System.Security.Cryptography.RSAParameters RsaPublicKey { get => throw null; } + public bool UseFIPS { get => throw null; } + public bool UseMachineContainer { get => throw null; } + public bool UseOAEP { get => throw null; } + } + public sealed class SchemeSettingElement : System.Configuration.ConfigurationElement + { + public SchemeSettingElement() => throw null; + public System.GenericUriParserOptions GenericUriParserOptions { get => throw null; } + public string Name { get => throw null; } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + } + public sealed class SchemeSettingElementCollection : System.Configuration.ConfigurationElementCollection + { + public override System.Configuration.ConfigurationElementCollectionType CollectionType { get => throw null; } + protected override System.Configuration.ConfigurationElement CreateNewElement() => throw null; + public SchemeSettingElementCollection() => throw null; + protected override object GetElementKey(System.Configuration.ConfigurationElement element) => throw null; + public int IndexOf(System.Configuration.SchemeSettingElement element) => throw null; + public System.Configuration.SchemeSettingElement this[int index] { get => throw null; } + public System.Configuration.SchemeSettingElement this[string name] { get => throw null; } + } + public sealed class SectionInformation + { + public System.Configuration.ConfigurationAllowDefinition AllowDefinition { get => throw null; set { } } + public System.Configuration.ConfigurationAllowExeDefinition AllowExeDefinition { get => throw null; set { } } + public bool AllowLocation { get => throw null; set { } } + public bool AllowOverride { get => throw null; set { } } + public string ConfigSource { get => throw null; set { } } + public void ForceDeclaration() => throw null; + public void ForceDeclaration(bool force) => throw null; + public bool ForceSave { get => throw null; set { } } + public System.Configuration.ConfigurationSection GetParentSection() => throw null; + public string GetRawXml() => throw null; + public bool InheritInChildApplications { get => throw null; set { } } + public bool IsDeclarationRequired { get => throw null; } + public bool IsDeclared { get => throw null; } + public bool IsLocked { get => throw null; } + public bool IsProtected { get => throw null; } + public string Name { get => throw null; } + public System.Configuration.OverrideMode OverrideMode { get => throw null; set { } } + public System.Configuration.OverrideMode OverrideModeDefault { get => throw null; set { } } + public System.Configuration.OverrideMode OverrideModeEffective { get => throw null; } + public System.Configuration.ProtectedConfigurationProvider ProtectionProvider { get => throw null; } + public void ProtectSection(string protectionProvider) => throw null; + public bool RequirePermission { get => throw null; set { } } + public bool RestartOnExternalChanges { get => throw null; set { } } + public void RevertToParent() => throw null; + public string SectionName { get => throw null; } + public void SetRawXml(string rawXml) => throw null; + public string Type { get => throw null; set { } } + public void UnprotectSection() => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public class SettingAttribute : System.Attribute + { + public SettingAttribute() => throw null; + } + public class SettingChangingEventArgs : System.ComponentModel.CancelEventArgs + { + public SettingChangingEventArgs(string settingName, string settingClass, string settingKey, object newValue, bool cancel) => throw null; + public object NewValue { get => throw null; } + public string SettingClass { get => throw null; } + public string SettingKey { get => throw null; } + public string SettingName { get => throw null; } + } + public delegate void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e); + public sealed class SettingElement : System.Configuration.ConfigurationElement + { + public SettingElement() => throw null; + public SettingElement(string name, System.Configuration.SettingsSerializeAs serializeAs) => throw null; + public override bool Equals(object settings) => throw null; + public override int GetHashCode() => throw null; + public string Name { get => throw null; set { } } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public System.Configuration.SettingsSerializeAs SerializeAs { get => throw null; set { } } + public System.Configuration.SettingValueElement Value { get => throw null; set { } } + } + public sealed class SettingElementCollection : System.Configuration.ConfigurationElementCollection + { + public void Add(System.Configuration.SettingElement element) => throw null; + public void Clear() => throw null; + public override System.Configuration.ConfigurationElementCollectionType CollectionType { get => throw null; } + protected override System.Configuration.ConfigurationElement CreateNewElement() => throw null; + public SettingElementCollection() => throw null; + protected override string ElementName { get => throw null; } + public System.Configuration.SettingElement Get(string elementKey) => throw null; + protected override object GetElementKey(System.Configuration.ConfigurationElement element) => throw null; + public void Remove(System.Configuration.SettingElement element) => throw null; + } + public class SettingsAttributeDictionary : System.Collections.Hashtable + { + public SettingsAttributeDictionary() => throw null; + public SettingsAttributeDictionary(System.Configuration.SettingsAttributeDictionary attributes) => throw null; + protected SettingsAttributeDictionary(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext) => throw null; + } + public abstract class SettingsBase + { + public virtual System.Configuration.SettingsContext Context { get => throw null; } + protected SettingsBase() => throw null; + public void Initialize(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection properties, System.Configuration.SettingsProviderCollection providers) => throw null; + public bool IsSynchronized { get => throw null; } + public virtual System.Configuration.SettingsPropertyCollection Properties { get => throw null; } + public virtual System.Configuration.SettingsPropertyValueCollection PropertyValues { get => throw null; } + public virtual System.Configuration.SettingsProviderCollection Providers { get => throw null; } + public virtual void Save() => throw null; + public static System.Configuration.SettingsBase Synchronized(System.Configuration.SettingsBase settingsBase) => throw null; + public virtual object this[string propertyName] { get => throw null; set { } } + } + public class SettingsContext : System.Collections.Hashtable + { + public SettingsContext() => throw null; + protected SettingsContext(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class SettingsDescriptionAttribute : System.Attribute + { + public SettingsDescriptionAttribute(string description) => throw null; + public string Description { get => throw null; } + } + [System.AttributeUsage((System.AttributeTargets)4)] + public sealed class SettingsGroupDescriptionAttribute : System.Attribute + { + public SettingsGroupDescriptionAttribute(string description) => throw null; + public string Description { get => throw null; } + } + [System.AttributeUsage((System.AttributeTargets)4)] + public sealed class SettingsGroupNameAttribute : System.Attribute + { + public SettingsGroupNameAttribute(string groupName) => throw null; + public string GroupName { get => throw null; } + } + public class SettingsLoadedEventArgs : System.EventArgs + { + public SettingsLoadedEventArgs(System.Configuration.SettingsProvider provider) => throw null; + public System.Configuration.SettingsProvider Provider { get => throw null; } + } + public delegate void SettingsLoadedEventHandler(object sender, System.Configuration.SettingsLoadedEventArgs e); + public enum SettingsManageability + { + Roaming = 0, + } + [System.AttributeUsage((System.AttributeTargets)132)] + public sealed class SettingsManageabilityAttribute : System.Attribute + { + public SettingsManageabilityAttribute(System.Configuration.SettingsManageability manageability) => throw null; + public System.Configuration.SettingsManageability Manageability { get => throw null; } + } + public class SettingsProperty + { + public virtual System.Configuration.SettingsAttributeDictionary Attributes { get => throw null; } + public SettingsProperty(string name) => throw null; + public SettingsProperty(string name, System.Type propertyType, System.Configuration.SettingsProvider provider, bool isReadOnly, object defaultValue, System.Configuration.SettingsSerializeAs serializeAs, System.Configuration.SettingsAttributeDictionary attributes, bool throwOnErrorDeserializing, bool throwOnErrorSerializing) => throw null; + public SettingsProperty(System.Configuration.SettingsProperty propertyToCopy) => throw null; + public virtual object DefaultValue { get => throw null; set { } } + public virtual bool IsReadOnly { get => throw null; set { } } + public virtual string Name { get => throw null; set { } } + public virtual System.Type PropertyType { get => throw null; set { } } + public virtual System.Configuration.SettingsProvider Provider { get => throw null; set { } } + public virtual System.Configuration.SettingsSerializeAs SerializeAs { get => throw null; set { } } + public bool ThrowOnErrorDeserializing { get => throw null; set { } } + public bool ThrowOnErrorSerializing { get => throw null; set { } } + } + public class SettingsPropertyCollection : System.ICloneable, System.Collections.ICollection, System.Collections.IEnumerable + { + public void Add(System.Configuration.SettingsProperty property) => throw null; + public void Clear() => throw null; + public object Clone() => throw null; + public void CopyTo(System.Array array, int index) => throw null; + public int Count { get => throw null; } + public SettingsPropertyCollection() => throw null; + public System.Collections.IEnumerator GetEnumerator() => throw null; + public bool IsSynchronized { get => throw null; } + protected virtual void OnAdd(System.Configuration.SettingsProperty property) => throw null; + protected virtual void OnAddComplete(System.Configuration.SettingsProperty property) => throw null; + protected virtual void OnClear() => throw null; + protected virtual void OnClearComplete() => throw null; + protected virtual void OnRemove(System.Configuration.SettingsProperty property) => throw null; + protected virtual void OnRemoveComplete(System.Configuration.SettingsProperty property) => throw null; + public void Remove(string name) => throw null; + public void SetReadOnly() => throw null; + public object SyncRoot { get => throw null; } + public System.Configuration.SettingsProperty this[string name] { get => throw null; } + } + public class SettingsPropertyIsReadOnlyException : System.Exception + { + public SettingsPropertyIsReadOnlyException(string message) => throw null; + public SettingsPropertyIsReadOnlyException(string message, System.Exception innerException) => throw null; + protected SettingsPropertyIsReadOnlyException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public SettingsPropertyIsReadOnlyException() => throw null; + } + public class SettingsPropertyNotFoundException : System.Exception + { + public SettingsPropertyNotFoundException(string message) => throw null; + public SettingsPropertyNotFoundException(string message, System.Exception innerException) => throw null; + protected SettingsPropertyNotFoundException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public SettingsPropertyNotFoundException() => throw null; + } + public class SettingsPropertyValue + { + public SettingsPropertyValue(System.Configuration.SettingsProperty property) => throw null; + public bool Deserialized { get => throw null; set { } } + public bool IsDirty { get => throw null; set { } } + public string Name { get => throw null; } + public System.Configuration.SettingsProperty Property { get => throw null; } + public object PropertyValue { get => throw null; set { } } + public object SerializedValue { get => throw null; set { } } + public bool UsingDefaultValue { get => throw null; } + } + public class SettingsPropertyValueCollection : System.ICloneable, System.Collections.ICollection, System.Collections.IEnumerable + { + public void Add(System.Configuration.SettingsPropertyValue property) => throw null; + public void Clear() => throw null; + public object Clone() => throw null; + public void CopyTo(System.Array array, int index) => throw null; + public int Count { get => throw null; } + public SettingsPropertyValueCollection() => throw null; + public System.Collections.IEnumerator GetEnumerator() => throw null; + public bool IsSynchronized { get => throw null; } + public void Remove(string name) => throw null; + public void SetReadOnly() => throw null; + public object SyncRoot { get => throw null; } + public System.Configuration.SettingsPropertyValue this[string name] { get => throw null; } + } + public class SettingsPropertyWrongTypeException : System.Exception + { + public SettingsPropertyWrongTypeException(string message) => throw null; + public SettingsPropertyWrongTypeException(string message, System.Exception innerException) => throw null; + protected SettingsPropertyWrongTypeException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) => throw null; + public SettingsPropertyWrongTypeException() => throw null; + } + public abstract class SettingsProvider : System.Configuration.Provider.ProviderBase + { + public abstract string ApplicationName { get; set; } + protected SettingsProvider() => throw null; + public abstract System.Configuration.SettingsPropertyValueCollection GetPropertyValues(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection collection); + public abstract void SetPropertyValues(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyValueCollection collection); + } + [System.AttributeUsage((System.AttributeTargets)132)] + public sealed class SettingsProviderAttribute : System.Attribute + { + public SettingsProviderAttribute(string providerTypeName) => throw null; + public SettingsProviderAttribute(System.Type providerType) => throw null; + public string ProviderTypeName { get => throw null; } + } + public class SettingsProviderCollection : System.Configuration.Provider.ProviderCollection + { + public override void Add(System.Configuration.Provider.ProviderBase provider) => throw null; + public SettingsProviderCollection() => throw null; + public System.Configuration.SettingsProvider this[string name] { get => throw null; } + } + public delegate void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e); + public enum SettingsSerializeAs + { + String = 0, + Xml = 1, + Binary = 2, + ProviderSpecific = 3, + } + [System.AttributeUsage((System.AttributeTargets)132)] + public sealed class SettingsSerializeAsAttribute : System.Attribute + { + public SettingsSerializeAsAttribute(System.Configuration.SettingsSerializeAs serializeAs) => throw null; + public System.Configuration.SettingsSerializeAs SerializeAs { get => throw null; } + } + public sealed class SettingValueElement : System.Configuration.ConfigurationElement + { + public SettingValueElement() => throw null; + protected override void DeserializeElement(System.Xml.XmlReader reader, bool serializeCollectionKey) => throw null; + public override bool Equals(object settingValue) => throw null; + public override int GetHashCode() => throw null; + protected override bool IsModified() => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + protected override void Reset(System.Configuration.ConfigurationElement parentElement) => throw null; + protected override void ResetModified() => throw null; + protected override bool SerializeToXmlElement(System.Xml.XmlWriter writer, string elementName) => throw null; + protected override void Unmerge(System.Configuration.ConfigurationElement sourceElement, System.Configuration.ConfigurationElement parentElement, System.Configuration.ConfigurationSaveMode saveMode) => throw null; + public System.Xml.XmlNode ValueXml { get => throw null; set { } } + } + public class SingleTagSectionHandler : System.Configuration.IConfigurationSectionHandler + { + public virtual object Create(object parent, object context, System.Xml.XmlNode section) => throw null; + public SingleTagSectionHandler() => throw null; + } + public enum SpecialSetting + { + ConnectionString = 0, + WebServiceUrl = 1, + } + [System.AttributeUsage((System.AttributeTargets)132)] + public sealed class SpecialSettingAttribute : System.Attribute + { + public SpecialSettingAttribute(System.Configuration.SpecialSetting specialSetting) => throw null; + public System.Configuration.SpecialSetting SpecialSetting { get => throw null; } + } + public class StringValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public StringValidator(int minLength) => throw null; + public StringValidator(int minLength, int maxLength) => throw null; + public StringValidator(int minLength, int maxLength, string invalidCharacters) => throw null; + public override void Validate(object value) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class StringValidatorAttribute : System.Configuration.ConfigurationValidatorAttribute + { + public StringValidatorAttribute() => throw null; + public string InvalidCharacters { get => throw null; set { } } + public int MaxLength { get => throw null; set { } } + public int MinLength { get => throw null; set { } } + public override System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + } + public sealed class SubclassTypeValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public SubclassTypeValidator(System.Type baseClass) => throw null; + public override void Validate(object value) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class SubclassTypeValidatorAttribute : System.Configuration.ConfigurationValidatorAttribute + { + public System.Type BaseClass { get => throw null; } + public SubclassTypeValidatorAttribute(System.Type baseClass) => throw null; + public override System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + } + public class TimeSpanMinutesConverter : System.Configuration.ConfigurationConverterBase + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public TimeSpanMinutesConverter() => throw null; + } + public sealed class TimeSpanMinutesOrInfiniteConverter : System.Configuration.TimeSpanMinutesConverter + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public TimeSpanMinutesOrInfiniteConverter() => throw null; + } + public class TimeSpanSecondsConverter : System.Configuration.ConfigurationConverterBase + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public TimeSpanSecondsConverter() => throw null; + } + public sealed class TimeSpanSecondsOrInfiniteConverter : System.Configuration.TimeSpanSecondsConverter + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public TimeSpanSecondsOrInfiniteConverter() => throw null; + } + public class TimeSpanValidator : System.Configuration.ConfigurationValidatorBase + { + public override bool CanValidate(System.Type type) => throw null; + public TimeSpanValidator(System.TimeSpan minValue, System.TimeSpan maxValue) => throw null; + public TimeSpanValidator(System.TimeSpan minValue, System.TimeSpan maxValue, bool rangeIsExclusive) => throw null; + public TimeSpanValidator(System.TimeSpan minValue, System.TimeSpan maxValue, bool rangeIsExclusive, long resolutionInSeconds) => throw null; + public override void Validate(object value) => throw null; + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class TimeSpanValidatorAttribute : System.Configuration.ConfigurationValidatorAttribute + { + public TimeSpanValidatorAttribute() => throw null; + public bool ExcludeRange { get => throw null; set { } } + public System.TimeSpan MaxValue { get => throw null; } + public string MaxValueString { get => throw null; set { } } + public System.TimeSpan MinValue { get => throw null; } + public string MinValueString { get => throw null; set { } } + public const string TimeSpanMaxValue = default; + public const string TimeSpanMinValue = default; + public override System.Configuration.ConfigurationValidatorBase ValidatorInstance { get => throw null; } + } + public sealed class TypeNameConverter : System.Configuration.ConfigurationConverterBase + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public TypeNameConverter() => throw null; + } + public sealed class UriSection : System.Configuration.ConfigurationSection + { + public UriSection() => throw null; + public System.Configuration.IdnElement Idn { get => throw null; } + public System.Configuration.IriParsingElement IriParsing { get => throw null; } + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + public System.Configuration.SchemeSettingElementCollection SchemeSettings { get => throw null; } + } + [System.AttributeUsage((System.AttributeTargets)128)] + public sealed class UserScopedSettingAttribute : System.Configuration.SettingAttribute + { + public UserScopedSettingAttribute() => throw null; + } + public sealed class UserSettingsGroup : System.Configuration.ConfigurationSectionGroup + { + public UserSettingsGroup() => throw null; + } + public delegate void ValidatorCallback(object value); + public sealed class WhiteSpaceTrimStringConverter : System.Configuration.ConfigurationConverterBase + { + public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object data) => throw null; + public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext ctx, System.Globalization.CultureInfo ci, object value, System.Type type) => throw null; + public WhiteSpaceTrimStringConverter() => throw null; + } + } + namespace Diagnostics + { + public static class TraceConfiguration + { + public static void Register() => throw null; + } + } + namespace Drawing + { + namespace Configuration + { + public sealed class SystemDrawingSection : System.Configuration.ConfigurationSection + { + public string BitmapSuffix { get => throw null; set { } } + public SystemDrawingSection() => throw null; + protected override System.Configuration.ConfigurationPropertyCollection Properties { get => throw null; } + } + } + } + public enum UriIdnScope + { + None = 0, + AllExceptIntranet = 1, + All = 2, + } +} diff --git a/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/8.0.0/System.Configuration.ConfigurationManager.csproj b/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/8.0.0/System.Configuration.ConfigurationManager.csproj new file mode 100644 index 00000000000..aca3cc90fda --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Configuration.ConfigurationManager/8.0.0/System.Configuration.ConfigurationManager.csproj @@ -0,0 +1,14 @@ + + + net8.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Data.OleDb/8.0.0/System.Data.OleDb.cs b/csharp/ql/test/resources/stubs/System.Data.OleDb/8.0.0/System.Data.OleDb.cs new file mode 100644 index 00000000000..35f5a3bf3d2 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Data.OleDb/8.0.0/System.Data.OleDb.cs @@ -0,0 +1,449 @@ +// This file contains auto-generated code. +// Generated from `System.Data.OleDb, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51`. +namespace System +{ + namespace Data + { + namespace OleDb + { + public sealed class OleDbCommand : System.Data.Common.DbCommand, System.ICloneable, System.Data.IDbCommand, System.IDisposable + { + public override void Cancel() => throw null; + public System.Data.OleDb.OleDbCommand Clone() => throw null; + object System.ICloneable.Clone() => throw null; + public override string CommandText { get => throw null; set { } } + public override int CommandTimeout { get => throw null; set { } } + public override System.Data.CommandType CommandType { get => throw null; set { } } + public System.Data.OleDb.OleDbConnection Connection { get => throw null; set { } } + protected override System.Data.Common.DbParameter CreateDbParameter() => throw null; + public System.Data.OleDb.OleDbParameter CreateParameter() => throw null; + public OleDbCommand() => throw null; + public OleDbCommand(string cmdText) => throw null; + public OleDbCommand(string cmdText, System.Data.OleDb.OleDbConnection connection) => throw null; + public OleDbCommand(string cmdText, System.Data.OleDb.OleDbConnection connection, System.Data.OleDb.OleDbTransaction transaction) => throw null; + protected override System.Data.Common.DbConnection DbConnection { get => throw null; set { } } + protected override System.Data.Common.DbParameterCollection DbParameterCollection { get => throw null; } + protected override System.Data.Common.DbTransaction DbTransaction { get => throw null; set { } } + public override bool DesignTimeVisible { get => throw null; set { } } + protected override void Dispose(bool disposing) => throw null; + protected override System.Data.Common.DbDataReader ExecuteDbDataReader(System.Data.CommandBehavior behavior) => throw null; + public override int ExecuteNonQuery() => throw null; + public System.Data.OleDb.OleDbDataReader ExecuteReader() => throw null; + public System.Data.OleDb.OleDbDataReader ExecuteReader(System.Data.CommandBehavior behavior) => throw null; + System.Data.IDataReader System.Data.IDbCommand.ExecuteReader() => throw null; + System.Data.IDataReader System.Data.IDbCommand.ExecuteReader(System.Data.CommandBehavior behavior) => throw null; + public override object ExecuteScalar() => throw null; + public System.Data.OleDb.OleDbParameterCollection Parameters { get => throw null; } + public override void Prepare() => throw null; + public void ResetCommandTimeout() => throw null; + public System.Data.OleDb.OleDbTransaction Transaction { get => throw null; set { } } + public override System.Data.UpdateRowSource UpdatedRowSource { get => throw null; set { } } + } + public sealed class OleDbCommandBuilder : System.Data.Common.DbCommandBuilder + { + protected override void ApplyParameterInfo(System.Data.Common.DbParameter parameter, System.Data.DataRow datarow, System.Data.StatementType statementType, bool whereClause) => throw null; + public OleDbCommandBuilder() => throw null; + public OleDbCommandBuilder(System.Data.OleDb.OleDbDataAdapter adapter) => throw null; + public System.Data.OleDb.OleDbDataAdapter DataAdapter { get => throw null; set { } } + public static void DeriveParameters(System.Data.OleDb.OleDbCommand command) => throw null; + public System.Data.OleDb.OleDbCommand GetDeleteCommand() => throw null; + public System.Data.OleDb.OleDbCommand GetDeleteCommand(bool useColumnsForParameterNames) => throw null; + public System.Data.OleDb.OleDbCommand GetInsertCommand() => throw null; + public System.Data.OleDb.OleDbCommand GetInsertCommand(bool useColumnsForParameterNames) => throw null; + protected override string GetParameterName(int parameterOrdinal) => throw null; + protected override string GetParameterName(string parameterName) => throw null; + protected override string GetParameterPlaceholder(int parameterOrdinal) => throw null; + public System.Data.OleDb.OleDbCommand GetUpdateCommand() => throw null; + public System.Data.OleDb.OleDbCommand GetUpdateCommand(bool useColumnsForParameterNames) => throw null; + public override string QuoteIdentifier(string unquotedIdentifier) => throw null; + public string QuoteIdentifier(string unquotedIdentifier, System.Data.OleDb.OleDbConnection connection) => throw null; + protected override void SetRowUpdatingHandler(System.Data.Common.DbDataAdapter adapter) => throw null; + public override string UnquoteIdentifier(string quotedIdentifier) => throw null; + public string UnquoteIdentifier(string quotedIdentifier, System.Data.OleDb.OleDbConnection connection) => throw null; + } + public sealed class OleDbConnection : System.Data.Common.DbConnection, System.ICloneable, System.Data.IDbConnection, System.IDisposable + { + protected override System.Data.Common.DbTransaction BeginDbTransaction(System.Data.IsolationLevel isolationLevel) => throw null; + public System.Data.OleDb.OleDbTransaction BeginTransaction() => throw null; + public System.Data.OleDb.OleDbTransaction BeginTransaction(System.Data.IsolationLevel isolationLevel) => throw null; + public override void ChangeDatabase(string value) => throw null; + object System.ICloneable.Clone() => throw null; + public override void Close() => throw null; + public override string ConnectionString { get => throw null; set { } } + public override int ConnectionTimeout { get => throw null; } + public System.Data.OleDb.OleDbCommand CreateCommand() => throw null; + protected override System.Data.Common.DbCommand CreateDbCommand() => throw null; + public OleDbConnection() => throw null; + public OleDbConnection(string connectionString) => throw null; + public override string Database { get => throw null; } + public override string DataSource { get => throw null; } + protected override void Dispose(bool disposing) => throw null; + public override void EnlistTransaction(System.Transactions.Transaction transaction) => throw null; + public System.Data.DataTable GetOleDbSchemaTable(System.Guid schema, object[] restrictions) => throw null; + public override System.Data.DataTable GetSchema() => throw null; + public override System.Data.DataTable GetSchema(string collectionName) => throw null; + public override System.Data.DataTable GetSchema(string collectionName, string[] restrictionValues) => throw null; + public event System.Data.OleDb.OleDbInfoMessageEventHandler InfoMessage; + public override void Open() => throw null; + public string Provider { get => throw null; } + public static void ReleaseObjectPool() => throw null; + public void ResetState() => throw null; + public override string ServerVersion { get => throw null; } + public override System.Data.ConnectionState State { get => throw null; } + } + public sealed class OleDbConnectionStringBuilder : System.Data.Common.DbConnectionStringBuilder + { + public override void Clear() => throw null; + public override bool ContainsKey(string keyword) => throw null; + public OleDbConnectionStringBuilder() => throw null; + public OleDbConnectionStringBuilder(string connectionString) => throw null; + public string DataSource { get => throw null; set { } } + public string FileName { get => throw null; set { } } + public override System.Collections.ICollection Keys { get => throw null; } + public int OleDbServices { get => throw null; set { } } + public bool PersistSecurityInfo { get => throw null; set { } } + public string Provider { get => throw null; set { } } + public override bool Remove(string keyword) => throw null; + public override object this[string keyword] { get => throw null; set { } } + public override bool TryGetValue(string keyword, out object value) => throw null; + } + public sealed class OleDbDataAdapter : System.Data.Common.DbDataAdapter, System.ICloneable, System.Data.IDataAdapter, System.Data.IDbDataAdapter + { + object System.ICloneable.Clone() => throw null; + protected override System.Data.Common.RowUpdatedEventArgs CreateRowUpdatedEvent(System.Data.DataRow dataRow, System.Data.IDbCommand command, System.Data.StatementType statementType, System.Data.Common.DataTableMapping tableMapping) => throw null; + protected override System.Data.Common.RowUpdatingEventArgs CreateRowUpdatingEvent(System.Data.DataRow dataRow, System.Data.IDbCommand command, System.Data.StatementType statementType, System.Data.Common.DataTableMapping tableMapping) => throw null; + public OleDbDataAdapter() => throw null; + public OleDbDataAdapter(System.Data.OleDb.OleDbCommand selectCommand) => throw null; + public OleDbDataAdapter(string selectCommandText, System.Data.OleDb.OleDbConnection selectConnection) => throw null; + public OleDbDataAdapter(string selectCommandText, string selectConnectionString) => throw null; + public System.Data.OleDb.OleDbCommand DeleteCommand { get => throw null; set { } } + System.Data.IDbCommand System.Data.IDbDataAdapter.DeleteCommand { get => throw null; set { } } + public int Fill(System.Data.DataSet dataSet, object ADODBRecordSet, string srcTable) => throw null; + public int Fill(System.Data.DataTable dataTable, object ADODBRecordSet) => throw null; + public System.Data.OleDb.OleDbCommand InsertCommand { get => throw null; set { } } + System.Data.IDbCommand System.Data.IDbDataAdapter.InsertCommand { get => throw null; set { } } + protected override void OnRowUpdated(System.Data.Common.RowUpdatedEventArgs value) => throw null; + protected override void OnRowUpdating(System.Data.Common.RowUpdatingEventArgs value) => throw null; + public event System.Data.OleDb.OleDbRowUpdatedEventHandler RowUpdated; + public event System.Data.OleDb.OleDbRowUpdatingEventHandler RowUpdating; + public System.Data.OleDb.OleDbCommand SelectCommand { get => throw null; set { } } + System.Data.IDbCommand System.Data.IDbDataAdapter.SelectCommand { get => throw null; set { } } + System.Data.IDbCommand System.Data.IDbDataAdapter.UpdateCommand { get => throw null; set { } } + public System.Data.OleDb.OleDbCommand UpdateCommand { get => throw null; set { } } + } + public sealed class OleDbDataReader : System.Data.Common.DbDataReader + { + public override void Close() => throw null; + public override int Depth { get => throw null; } + public override int FieldCount { get => throw null; } + public override bool GetBoolean(int ordinal) => throw null; + public override byte GetByte(int ordinal) => throw null; + public override long GetBytes(int ordinal, long dataIndex, byte[] buffer, int bufferIndex, int length) => throw null; + public override char GetChar(int ordinal) => throw null; + public override long GetChars(int ordinal, long dataIndex, char[] buffer, int bufferIndex, int length) => throw null; + public System.Data.OleDb.OleDbDataReader GetData(int ordinal) => throw null; + public override string GetDataTypeName(int index) => throw null; + public override System.DateTime GetDateTime(int ordinal) => throw null; + protected override System.Data.Common.DbDataReader GetDbDataReader(int ordinal) => throw null; + public override decimal GetDecimal(int ordinal) => throw null; + public override double GetDouble(int ordinal) => throw null; + public override System.Collections.IEnumerator GetEnumerator() => throw null; + public override System.Type GetFieldType(int index) => throw null; + public override float GetFloat(int ordinal) => throw null; + public override System.Guid GetGuid(int ordinal) => throw null; + public override short GetInt16(int ordinal) => throw null; + public override int GetInt32(int ordinal) => throw null; + public override long GetInt64(int ordinal) => throw null; + public override string GetName(int index) => throw null; + public override int GetOrdinal(string name) => throw null; + public override System.Data.DataTable GetSchemaTable() => throw null; + public override string GetString(int ordinal) => throw null; + public System.TimeSpan GetTimeSpan(int ordinal) => throw null; + public override object GetValue(int ordinal) => throw null; + public override int GetValues(object[] values) => throw null; + public override bool HasRows { get => throw null; } + public override bool IsClosed { get => throw null; } + public override bool IsDBNull(int ordinal) => throw null; + public override bool NextResult() => throw null; + public override bool Read() => throw null; + public override int RecordsAffected { get => throw null; } + public override object this[int index] { get => throw null; } + public override object this[string name] { get => throw null; } + public override int VisibleFieldCount { get => throw null; } + } + public sealed class OleDbEnumerator + { + public OleDbEnumerator() => throw null; + public System.Data.DataTable GetElements() => throw null; + public static System.Data.OleDb.OleDbDataReader GetEnumerator(System.Type type) => throw null; + public static System.Data.OleDb.OleDbDataReader GetRootEnumerator() => throw null; + } + public sealed class OleDbError + { + public string Message { get => throw null; } + public int NativeError { get => throw null; } + public string Source { get => throw null; } + public string SQLState { get => throw null; } + public override string ToString() => throw null; + } + public sealed class OleDbErrorCollection : System.Collections.ICollection, System.Collections.IEnumerable + { + public void CopyTo(System.Array array, int index) => throw null; + public void CopyTo(System.Data.OleDb.OleDbError[] array, int index) => throw null; + public int Count { get => throw null; } + public System.Collections.IEnumerator GetEnumerator() => throw null; + bool System.Collections.ICollection.IsSynchronized { get => throw null; } + object System.Collections.ICollection.SyncRoot { get => throw null; } + public System.Data.OleDb.OleDbError this[int index] { get => throw null; } + } + public sealed class OleDbException : System.Data.Common.DbException + { + public override int ErrorCode { get => throw null; } + public System.Data.OleDb.OleDbErrorCollection Errors { get => throw null; } + public override void GetObjectData(System.Runtime.Serialization.SerializationInfo si, System.Runtime.Serialization.StreamingContext context) => throw null; + } + public sealed class OleDbFactory : System.Data.Common.DbProviderFactory + { + public override System.Data.Common.DbCommand CreateCommand() => throw null; + public override System.Data.Common.DbCommandBuilder CreateCommandBuilder() => throw null; + public override System.Data.Common.DbConnection CreateConnection() => throw null; + public override System.Data.Common.DbConnectionStringBuilder CreateConnectionStringBuilder() => throw null; + public override System.Data.Common.DbDataAdapter CreateDataAdapter() => throw null; + public override System.Data.Common.DbParameter CreateParameter() => throw null; + public static readonly System.Data.OleDb.OleDbFactory Instance; + } + public sealed class OleDbInfoMessageEventArgs : System.EventArgs + { + public int ErrorCode { get => throw null; } + public System.Data.OleDb.OleDbErrorCollection Errors { get => throw null; } + public string Message { get => throw null; } + public string Source { get => throw null; } + public override string ToString() => throw null; + } + public delegate void OleDbInfoMessageEventHandler(object sender, System.Data.OleDb.OleDbInfoMessageEventArgs e); + public enum OleDbLiteral + { + Invalid = 0, + Binary_Literal = 1, + Catalog_Name = 2, + Catalog_Separator = 3, + Char_Literal = 4, + Column_Alias = 5, + Column_Name = 6, + Correlation_Name = 7, + Cursor_Name = 8, + Escape_Percent_Prefix = 9, + Escape_Underscore_Prefix = 10, + Index_Name = 11, + Like_Percent = 12, + Like_Underscore = 13, + Procedure_Name = 14, + Quote_Prefix = 15, + Schema_Name = 16, + Table_Name = 17, + Text_Command = 18, + User_Name = 19, + View_Name = 20, + Cube_Name = 21, + Dimension_Name = 22, + Hierarchy_Name = 23, + Level_Name = 24, + Member_Name = 25, + Property_Name = 26, + Schema_Separator = 27, + Quote_Suffix = 28, + Escape_Percent_Suffix = 29, + Escape_Underscore_Suffix = 30, + } + public static class OleDbMetaDataCollectionNames + { + public static readonly string Catalogs; + public static readonly string Collations; + public static readonly string Columns; + public static readonly string Indexes; + public static readonly string ProcedureColumns; + public static readonly string ProcedureParameters; + public static readonly string Procedures; + public static readonly string Tables; + public static readonly string Views; + } + public static class OleDbMetaDataColumnNames + { + public static readonly string BooleanFalseLiteral; + public static readonly string BooleanTrueLiteral; + public static readonly string DateTimeDigits; + public static readonly string NativeDataType; + } + public sealed class OleDbParameter : System.Data.Common.DbParameter, System.ICloneable, System.Data.IDataParameter, System.Data.IDbDataParameter + { + object System.ICloneable.Clone() => throw null; + public OleDbParameter() => throw null; + public OleDbParameter(string name, System.Data.OleDb.OleDbType dataType) => throw null; + public OleDbParameter(string name, System.Data.OleDb.OleDbType dataType, int size) => throw null; + public OleDbParameter(string parameterName, System.Data.OleDb.OleDbType dbType, int size, System.Data.ParameterDirection direction, bool isNullable, byte precision, byte scale, string srcColumn, System.Data.DataRowVersion srcVersion, object value) => throw null; + public OleDbParameter(string parameterName, System.Data.OleDb.OleDbType dbType, int size, System.Data.ParameterDirection direction, byte precision, byte scale, string sourceColumn, System.Data.DataRowVersion sourceVersion, bool sourceColumnNullMapping, object value) => throw null; + public OleDbParameter(string name, System.Data.OleDb.OleDbType dataType, int size, string srcColumn) => throw null; + public OleDbParameter(string name, object value) => throw null; + public override System.Data.DbType DbType { get => throw null; set { } } + public override System.Data.ParameterDirection Direction { get => throw null; set { } } + public override bool IsNullable { get => throw null; set { } } + public System.Data.OleDb.OleDbType OleDbType { get => throw null; set { } } + public override string ParameterName { get => throw null; set { } } + public byte Precision { get => throw null; set { } } + public override void ResetDbType() => throw null; + public void ResetOleDbType() => throw null; + public byte Scale { get => throw null; set { } } + public override int Size { get => throw null; set { } } + public override string SourceColumn { get => throw null; set { } } + public override bool SourceColumnNullMapping { get => throw null; set { } } + public override System.Data.DataRowVersion SourceVersion { get => throw null; set { } } + public override string ToString() => throw null; + public override object Value { get => throw null; set { } } + } + public sealed class OleDbParameterCollection : System.Data.Common.DbParameterCollection + { + public System.Data.OleDb.OleDbParameter Add(System.Data.OleDb.OleDbParameter value) => throw null; + public override int Add(object value) => throw null; + public System.Data.OleDb.OleDbParameter Add(string parameterName, System.Data.OleDb.OleDbType oleDbType) => throw null; + public System.Data.OleDb.OleDbParameter Add(string parameterName, System.Data.OleDb.OleDbType oleDbType, int size) => throw null; + public System.Data.OleDb.OleDbParameter Add(string parameterName, System.Data.OleDb.OleDbType oleDbType, int size, string sourceColumn) => throw null; + public System.Data.OleDb.OleDbParameter Add(string parameterName, object value) => throw null; + public override void AddRange(System.Array values) => throw null; + public void AddRange(System.Data.OleDb.OleDbParameter[] values) => throw null; + public System.Data.OleDb.OleDbParameter AddWithValue(string parameterName, object value) => throw null; + public override void Clear() => throw null; + public bool Contains(System.Data.OleDb.OleDbParameter value) => throw null; + public override bool Contains(object value) => throw null; + public override bool Contains(string value) => throw null; + public override void CopyTo(System.Array array, int index) => throw null; + public void CopyTo(System.Data.OleDb.OleDbParameter[] array, int index) => throw null; + public override int Count { get => throw null; } + public override System.Collections.IEnumerator GetEnumerator() => throw null; + protected override System.Data.Common.DbParameter GetParameter(int index) => throw null; + protected override System.Data.Common.DbParameter GetParameter(string parameterName) => throw null; + public int IndexOf(System.Data.OleDb.OleDbParameter value) => throw null; + public override int IndexOf(object value) => throw null; + public override int IndexOf(string parameterName) => throw null; + public void Insert(int index, System.Data.OleDb.OleDbParameter value) => throw null; + public override void Insert(int index, object value) => throw null; + public override bool IsFixedSize { get => throw null; } + public override bool IsReadOnly { get => throw null; } + public override bool IsSynchronized { get => throw null; } + public void Remove(System.Data.OleDb.OleDbParameter value) => throw null; + public override void Remove(object value) => throw null; + public override void RemoveAt(int index) => throw null; + public override void RemoveAt(string parameterName) => throw null; + protected override void SetParameter(int index, System.Data.Common.DbParameter value) => throw null; + protected override void SetParameter(string parameterName, System.Data.Common.DbParameter value) => throw null; + public override object SyncRoot { get => throw null; } + public System.Data.OleDb.OleDbParameter this[int index] { get => throw null; set { } } + public System.Data.OleDb.OleDbParameter this[string parameterName] { get => throw null; set { } } + } + public sealed class OleDbRowUpdatedEventArgs : System.Data.Common.RowUpdatedEventArgs + { + public System.Data.OleDb.OleDbCommand Command { get => throw null; } + public OleDbRowUpdatedEventArgs(System.Data.DataRow dataRow, System.Data.IDbCommand command, System.Data.StatementType statementType, System.Data.Common.DataTableMapping tableMapping) : base(default(System.Data.DataRow), default(System.Data.IDbCommand), default(System.Data.StatementType), default(System.Data.Common.DataTableMapping)) => throw null; + } + public delegate void OleDbRowUpdatedEventHandler(object sender, System.Data.OleDb.OleDbRowUpdatedEventArgs e); + public sealed class OleDbRowUpdatingEventArgs : System.Data.Common.RowUpdatingEventArgs + { + protected override System.Data.IDbCommand BaseCommand { get => throw null; set { } } + public System.Data.OleDb.OleDbCommand Command { get => throw null; set { } } + public OleDbRowUpdatingEventArgs(System.Data.DataRow dataRow, System.Data.IDbCommand command, System.Data.StatementType statementType, System.Data.Common.DataTableMapping tableMapping) : base(default(System.Data.DataRow), default(System.Data.IDbCommand), default(System.Data.StatementType), default(System.Data.Common.DataTableMapping)) => throw null; + } + public delegate void OleDbRowUpdatingEventHandler(object sender, System.Data.OleDb.OleDbRowUpdatingEventArgs e); + public sealed class OleDbSchemaGuid + { + public static readonly System.Guid Assertions; + public static readonly System.Guid Catalogs; + public static readonly System.Guid Character_Sets; + public static readonly System.Guid Check_Constraints; + public static readonly System.Guid Check_Constraints_By_Table; + public static readonly System.Guid Collations; + public static readonly System.Guid Column_Domain_Usage; + public static readonly System.Guid Column_Privileges; + public static readonly System.Guid Columns; + public static readonly System.Guid Constraint_Column_Usage; + public static readonly System.Guid Constraint_Table_Usage; + public OleDbSchemaGuid() => throw null; + public static readonly System.Guid DbInfoKeywords; + public static readonly System.Guid DbInfoLiterals; + public static readonly System.Guid Foreign_Keys; + public static readonly System.Guid Indexes; + public static readonly System.Guid Key_Column_Usage; + public static readonly System.Guid Primary_Keys; + public static readonly System.Guid Procedure_Columns; + public static readonly System.Guid Procedure_Parameters; + public static readonly System.Guid Procedures; + public static readonly System.Guid Provider_Types; + public static readonly System.Guid Referential_Constraints; + public static readonly System.Guid SchemaGuids; + public static readonly System.Guid Schemata; + public static readonly System.Guid Sql_Languages; + public static readonly System.Guid Statistics; + public static readonly System.Guid Table_Constraints; + public static readonly System.Guid Table_Privileges; + public static readonly System.Guid Table_Statistics; + public static readonly System.Guid Tables; + public static readonly System.Guid Tables_Info; + public static readonly System.Guid Translations; + public static readonly System.Guid Trustee; + public static readonly System.Guid Usage_Privileges; + public static readonly System.Guid View_Column_Usage; + public static readonly System.Guid View_Table_Usage; + public static readonly System.Guid Views; + } + public sealed class OleDbTransaction : System.Data.Common.DbTransaction + { + public System.Data.OleDb.OleDbTransaction Begin() => throw null; + public System.Data.OleDb.OleDbTransaction Begin(System.Data.IsolationLevel isolevel) => throw null; + public override void Commit() => throw null; + public System.Data.OleDb.OleDbConnection Connection { get => throw null; } + protected override System.Data.Common.DbConnection DbConnection { get => throw null; } + protected override void Dispose(bool disposing) => throw null; + public override System.Data.IsolationLevel IsolationLevel { get => throw null; } + public override void Rollback() => throw null; + } + public enum OleDbType + { + Empty = 0, + SmallInt = 2, + Integer = 3, + Single = 4, + Double = 5, + Currency = 6, + Date = 7, + BSTR = 8, + IDispatch = 9, + Error = 10, + Boolean = 11, + Variant = 12, + IUnknown = 13, + Decimal = 14, + TinyInt = 16, + UnsignedTinyInt = 17, + UnsignedSmallInt = 18, + UnsignedInt = 19, + BigInt = 20, + UnsignedBigInt = 21, + Filetime = 64, + Guid = 72, + Binary = 128, + Char = 129, + WChar = 130, + Numeric = 131, + DBDate = 133, + DBTime = 134, + DBTimeStamp = 135, + PropVariant = 138, + VarNumeric = 139, + VarChar = 200, + LongVarChar = 201, + VarWChar = 202, + LongVarWChar = 203, + VarBinary = 204, + LongVarBinary = 205, + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/System.Data.OleDb/8.0.0/System.Data.OleDb.csproj b/csharp/ql/test/resources/stubs/System.Data.OleDb/8.0.0/System.Data.OleDb.csproj new file mode 100644 index 00000000000..5d32dddf523 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Data.OleDb/8.0.0/System.Data.OleDb.csproj @@ -0,0 +1,14 @@ + + + net8.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Data.cs b/csharp/ql/test/resources/stubs/System.Data.cs deleted file mode 100644 index b03a2e04cda..00000000000 --- a/csharp/ql/test/resources/stubs/System.Data.cs +++ /dev/null @@ -1,187 +0,0 @@ -using System; - -namespace System.Data.SqlClient -{ - - public class SqlConnection : Common.DbConnection, IDisposable - { - public SqlConnection() { } - public SqlConnection(string connectionString) { } - public void Dispose() { } - public override string ConnectionString { get; set; } - public override void Open() { } - public override void Close() { } - } - - public class SqlCommand : Common.DbCommand - { - public SqlCommand(string s) { } - public SqlCommand(string s, SqlConnection t) { } - public SqlDataReader ExecuteReader() => null; - } - - public class SqlDataReader : Common.DbDataReader, IDataReader, IDataRecord - { - public override string GetString(int i) => ""; - } - - public class SqlDataAdapter : Common.DbDataAdapter, IDbDataAdapter, IDataAdapter - { - public SqlDataAdapter(string a, SqlConnection b) { } - public void Fill(DataSet ds) { } - public SqlCommand SelectCommand { get; set; } - } - - public class SqlParameter : Common.DbParameter, IDbDataParameter, IDataParameter - { - public SqlParameter(string s, object o) { } - } - - public class SqlParameterCollection : Common.DbParameterCollection - { - } - - public class SqlConnectionStringBuilder : Common.DbConnectionStringBuilder - { - } - - public class SqlException : Common.DbException - { - } -} - -namespace System.Data -{ - public interface IDbDataParameter - { - } - - public interface IDbConnection - { - string ConnectionString { get; set; } - } - - public interface IDataRecord - { - string GetString(int i); - } - - public interface IDbCommand - { - IDataReader ExecuteReader(); - CommandType CommandType { get; set; } - IDataParameterCollection Parameters { get; set; } - string CommandText { get; set; } - } - - public interface IDataReader - { - bool Read(); - void Close(); - string GetString(int i); - } - - - public interface IDataAdapter - { - } - - public interface IDbDataAdapter - { - } - - public interface IDataParameter - { - } - - public interface IDataParameterCollection - { - void Add(object obj); - } -} - -namespace System.Data.Common -{ - - public abstract class DbConnection : IDbConnection - { - public virtual string ConnectionString { get; set; } - string IDbConnection.ConnectionString { get; set; } - public abstract void Open(); - public abstract void Close(); - } - - public class DbDataReader : IDataReader - { - public bool Read() => false; - public void Close() { } - public virtual string GetString(int i) => ""; - } - - public abstract class DbCommand : IDbCommand, IDisposable - { - public DbDataReader ExecuteReader() => null; - public CommandType CommandType { get; set; } - public IDataParameterCollection Parameters { get; set; } - IDataReader IDbCommand.ExecuteReader() => null; - public void Dispose() { } - public string CommandText { get; set; } - } - - public class DbDataAdapter : IDataAdapter, IDbDataAdapter - { - } - - public class DbParameter : IDbDataParameter, IDataParameter - { - } - - public class DbParameterCollection : IDataParameterCollection - { - public void Add(object obj) { } - } - - public class DbConnectionStringBuilder - { - public virtual object this[string keyword] { get => null; set { } } - public virtual string ConnectionString { get; set; } - } - - public class DbException : Exception - { - } -} - -namespace System.Data.OleDb -{ - - public class OleDbConnection : Common.DbConnection, IDisposable - { - public OleDbConnection(string s) { } - void IDisposable.Dispose() { } - public override void Open() { } - public override void Close() { } - } - - public class OleDbDataReader : Common.DbDataReader - { - public bool Read() => false; - public void Close() - { - } - - public string GetString(int x) => null; - - public object this[string s] => null; - } - - public class OleDbCommand : Common.DbCommand - { - public OleDbCommand(string e, OleDbConnection c) - { - } - - public OleDbDataReader ExecuteReader() => null; - } -} - diff --git a/csharp/ql/test/resources/stubs/System.Diagnostics.EventLog/8.0.0/System.Diagnostics.EventLog.csproj b/csharp/ql/test/resources/stubs/System.Diagnostics.EventLog/8.0.0/System.Diagnostics.EventLog.csproj new file mode 100644 index 00000000000..61622bc5296 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Diagnostics.EventLog/8.0.0/System.Diagnostics.EventLog.csproj @@ -0,0 +1,12 @@ + + + net8.0 + true + bin\ + false + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Diagnostics.PerformanceCounter/8.0.0/System.Diagnostics.PerformanceCounter.cs b/csharp/ql/test/resources/stubs/System.Diagnostics.PerformanceCounter/8.0.0/System.Diagnostics.PerformanceCounter.cs new file mode 100644 index 00000000000..b7fa657a816 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Diagnostics.PerformanceCounter/8.0.0/System.Diagnostics.PerformanceCounter.cs @@ -0,0 +1,275 @@ +// This file contains auto-generated code. +// Generated from `System.Diagnostics.PerformanceCounter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51`. +namespace System +{ + namespace Diagnostics + { + public class CounterCreationData + { + public string CounterHelp { get => throw null; set { } } + public string CounterName { get => throw null; set { } } + public System.Diagnostics.PerformanceCounterType CounterType { get => throw null; set { } } + public CounterCreationData() => throw null; + public CounterCreationData(string counterName, string counterHelp, System.Diagnostics.PerformanceCounterType counterType) => throw null; + } + public class CounterCreationDataCollection : System.Collections.CollectionBase + { + public int Add(System.Diagnostics.CounterCreationData value) => throw null; + public void AddRange(System.Diagnostics.CounterCreationDataCollection value) => throw null; + public void AddRange(System.Diagnostics.CounterCreationData[] value) => throw null; + public bool Contains(System.Diagnostics.CounterCreationData value) => throw null; + public void CopyTo(System.Diagnostics.CounterCreationData[] array, int index) => throw null; + public CounterCreationDataCollection() => throw null; + public CounterCreationDataCollection(System.Diagnostics.CounterCreationDataCollection value) => throw null; + public CounterCreationDataCollection(System.Diagnostics.CounterCreationData[] value) => throw null; + public int IndexOf(System.Diagnostics.CounterCreationData value) => throw null; + public void Insert(int index, System.Diagnostics.CounterCreationData value) => throw null; + protected override void OnValidate(object value) => throw null; + public virtual void Remove(System.Diagnostics.CounterCreationData value) => throw null; + public System.Diagnostics.CounterCreationData this[int index] { get => throw null; set { } } + } + public struct CounterSample : System.IEquatable + { + public long BaseValue { get => throw null; } + public static float Calculate(System.Diagnostics.CounterSample counterSample) => throw null; + public static float Calculate(System.Diagnostics.CounterSample counterSample, System.Diagnostics.CounterSample nextCounterSample) => throw null; + public long CounterFrequency { get => throw null; } + public long CounterTimeStamp { get => throw null; } + public System.Diagnostics.PerformanceCounterType CounterType { get => throw null; } + public CounterSample(long rawValue, long baseValue, long counterFrequency, long systemFrequency, long timeStamp, long timeStamp100nSec, System.Diagnostics.PerformanceCounterType counterType) => throw null; + public CounterSample(long rawValue, long baseValue, long counterFrequency, long systemFrequency, long timeStamp, long timeStamp100nSec, System.Diagnostics.PerformanceCounterType counterType, long counterTimeStamp) => throw null; + public static System.Diagnostics.CounterSample Empty; + public bool Equals(System.Diagnostics.CounterSample sample) => throw null; + public override bool Equals(object o) => throw null; + public override int GetHashCode() => throw null; + public static bool operator ==(System.Diagnostics.CounterSample a, System.Diagnostics.CounterSample b) => throw null; + public static bool operator !=(System.Diagnostics.CounterSample a, System.Diagnostics.CounterSample b) => throw null; + public long RawValue { get => throw null; } + public long SystemFrequency { get => throw null; } + public long TimeStamp { get => throw null; } + public long TimeStamp100nSec { get => throw null; } + } + public static class CounterSampleCalculator + { + public static float ComputeCounterValue(System.Diagnostics.CounterSample newSample) => throw null; + public static float ComputeCounterValue(System.Diagnostics.CounterSample oldSample, System.Diagnostics.CounterSample newSample) => throw null; + } + public interface ICollectData + { + void CloseData(); + void CollectData(int id, nint valueName, nint data, int totalBytes, out nint res); + } + public class InstanceData + { + public InstanceData(string instanceName, System.Diagnostics.CounterSample sample) => throw null; + public string InstanceName { get => throw null; } + public long RawValue { get => throw null; } + public System.Diagnostics.CounterSample Sample { get => throw null; } + } + public class InstanceDataCollection : System.Collections.DictionaryBase + { + public bool Contains(string instanceName) => throw null; + public void CopyTo(System.Diagnostics.InstanceData[] instances, int index) => throw null; + public string CounterName { get => throw null; } + public InstanceDataCollection(string counterName) => throw null; + public System.Collections.ICollection Keys { get => throw null; } + public System.Diagnostics.InstanceData this[string instanceName] { get => throw null; } + public System.Collections.ICollection Values { get => throw null; } + } + public class InstanceDataCollectionCollection : System.Collections.DictionaryBase + { + public bool Contains(string counterName) => throw null; + public void CopyTo(System.Diagnostics.InstanceDataCollection[] counters, int index) => throw null; + public InstanceDataCollectionCollection() => throw null; + public System.Collections.ICollection Keys { get => throw null; } + public System.Diagnostics.InstanceDataCollection this[string counterName] { get => throw null; } + public System.Collections.ICollection Values { get => throw null; } + } + public sealed class PerformanceCounter : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize + { + public void BeginInit() => throw null; + public string CategoryName { get => throw null; set { } } + public void Close() => throw null; + public static void CloseSharedResources() => throw null; + public string CounterHelp { get => throw null; } + public string CounterName { get => throw null; set { } } + public System.Diagnostics.PerformanceCounterType CounterType { get => throw null; } + public PerformanceCounter() => throw null; + public PerformanceCounter(string categoryName, string counterName) => throw null; + public PerformanceCounter(string categoryName, string counterName, bool readOnly) => throw null; + public PerformanceCounter(string categoryName, string counterName, string instanceName) => throw null; + public PerformanceCounter(string categoryName, string counterName, string instanceName, bool readOnly) => throw null; + public PerformanceCounter(string categoryName, string counterName, string instanceName, string machineName) => throw null; + public long Decrement() => throw null; + public static int DefaultFileMappingSize; + protected override void Dispose(bool disposing) => throw null; + public void EndInit() => throw null; + public long Increment() => throw null; + public long IncrementBy(long value) => throw null; + public System.Diagnostics.PerformanceCounterInstanceLifetime InstanceLifetime { get => throw null; set { } } + public string InstanceName { get => throw null; set { } } + public string MachineName { get => throw null; set { } } + public System.Diagnostics.CounterSample NextSample() => throw null; + public float NextValue() => throw null; + public long RawValue { get => throw null; set { } } + public bool ReadOnly { get => throw null; set { } } + public void RemoveInstance() => throw null; + } + public sealed class PerformanceCounterCategory + { + public string CategoryHelp { get => throw null; } + public string CategoryName { get => throw null; set { } } + public System.Diagnostics.PerformanceCounterCategoryType CategoryType { get => throw null; } + public bool CounterExists(string counterName) => throw null; + public static bool CounterExists(string counterName, string categoryName) => throw null; + public static bool CounterExists(string counterName, string categoryName, string machineName) => throw null; + public static System.Diagnostics.PerformanceCounterCategory Create(string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData) => throw null; + public static System.Diagnostics.PerformanceCounterCategory Create(string categoryName, string categoryHelp, System.Diagnostics.PerformanceCounterCategoryType categoryType, System.Diagnostics.CounterCreationDataCollection counterData) => throw null; + public static System.Diagnostics.PerformanceCounterCategory Create(string categoryName, string categoryHelp, System.Diagnostics.PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) => throw null; + public static System.Diagnostics.PerformanceCounterCategory Create(string categoryName, string categoryHelp, string counterName, string counterHelp) => throw null; + public PerformanceCounterCategory() => throw null; + public PerformanceCounterCategory(string categoryName) => throw null; + public PerformanceCounterCategory(string categoryName, string machineName) => throw null; + public static void Delete(string categoryName) => throw null; + public static bool Exists(string categoryName) => throw null; + public static bool Exists(string categoryName, string machineName) => throw null; + public static System.Diagnostics.PerformanceCounterCategory[] GetCategories() => throw null; + public static System.Diagnostics.PerformanceCounterCategory[] GetCategories(string machineName) => throw null; + public System.Diagnostics.PerformanceCounter[] GetCounters() => throw null; + public System.Diagnostics.PerformanceCounter[] GetCounters(string instanceName) => throw null; + public string[] GetInstanceNames() => throw null; + public bool InstanceExists(string instanceName) => throw null; + public static bool InstanceExists(string instanceName, string categoryName) => throw null; + public static bool InstanceExists(string instanceName, string categoryName, string machineName) => throw null; + public string MachineName { get => throw null; set { } } + public System.Diagnostics.InstanceDataCollectionCollection ReadCategory() => throw null; + } + public enum PerformanceCounterCategoryType + { + Unknown = -1, + SingleInstance = 0, + MultiInstance = 1, + } + public enum PerformanceCounterInstanceLifetime + { + Global = 0, + Process = 1, + } + public sealed class PerformanceCounterManager : System.Diagnostics.ICollectData + { + void System.Diagnostics.ICollectData.CloseData() => throw null; + void System.Diagnostics.ICollectData.CollectData(int callIdx, nint valueNamePtr, nint dataPtr, int totalBytes, out nint res) => throw null; + public PerformanceCounterManager() => throw null; + } + public enum PerformanceCounterType + { + NumberOfItemsHEX32 = 0, + NumberOfItemsHEX64 = 256, + NumberOfItems32 = 65536, + NumberOfItems64 = 65792, + CounterDelta32 = 4195328, + CounterDelta64 = 4195584, + SampleCounter = 4260864, + CountPerTimeInterval32 = 4523008, + CountPerTimeInterval64 = 4523264, + RateOfCountsPerSecond32 = 272696320, + RateOfCountsPerSecond64 = 272696576, + RawFraction = 537003008, + CounterTimer = 541132032, + Timer100Ns = 542180608, + SampleFraction = 549585920, + CounterTimerInverse = 557909248, + Timer100NsInverse = 558957824, + CounterMultiTimer = 574686464, + CounterMultiTimer100Ns = 575735040, + CounterMultiTimerInverse = 591463680, + CounterMultiTimer100NsInverse = 592512256, + AverageTimer32 = 805438464, + ElapsedTime = 807666944, + AverageCount64 = 1073874176, + SampleBase = 1073939457, + AverageBase = 1073939458, + RawBase = 1073939459, + CounterMultiBase = 1107494144, + } + namespace PerformanceData + { + public sealed class CounterData + { + public void Decrement() => throw null; + public void Increment() => throw null; + public void IncrementBy(long value) => throw null; + public long RawValue { get => throw null; set { } } + public long Value { get => throw null; set { } } + } + public class CounterSet : System.IDisposable + { + public void AddCounter(int counterId, System.Diagnostics.PerformanceData.CounterType counterType) => throw null; + public void AddCounter(int counterId, System.Diagnostics.PerformanceData.CounterType counterType, string counterName) => throw null; + public System.Diagnostics.PerformanceData.CounterSetInstance CreateCounterSetInstance(string instanceName) => throw null; + public CounterSet(System.Guid providerGuid, System.Guid counterSetGuid, System.Diagnostics.PerformanceData.CounterSetInstanceType instanceType) => throw null; + public void Dispose() => throw null; + protected virtual void Dispose(bool disposing) => throw null; + } + public sealed class CounterSetInstance : System.IDisposable + { + public System.Diagnostics.PerformanceData.CounterSetInstanceCounterDataSet Counters { get => throw null; } + public void Dispose() => throw null; + } + public sealed class CounterSetInstanceCounterDataSet : System.IDisposable + { + public void Dispose() => throw null; + public System.Diagnostics.PerformanceData.CounterData this[int counterId] { get => throw null; } + public System.Diagnostics.PerformanceData.CounterData this[string counterName] { get => throw null; } + } + public enum CounterSetInstanceType + { + Single = 0, + Multiple = 2, + GlobalAggregate = 4, + MultipleAggregate = 6, + GlobalAggregateWithHistory = 11, + InstanceAggregate = 22, + } + public enum CounterType + { + RawDataHex32 = 0, + RawDataHex64 = 256, + RawData32 = 65536, + RawData64 = 65792, + Delta32 = 4195328, + Delta64 = 4195584, + SampleCounter = 4260864, + QueueLength = 4523008, + LargeQueueLength = 4523264, + QueueLength100Ns = 5571840, + QueueLengthObjectTime = 6620416, + RateOfCountPerSecond32 = 272696320, + RateOfCountPerSecond64 = 272696576, + RawFraction32 = 537003008, + RawFraction64 = 537003264, + PercentageActive = 541132032, + PrecisionSystemTimer = 541525248, + PercentageActive100Ns = 542180608, + PrecisionTimer100Ns = 542573824, + ObjectSpecificTimer = 543229184, + PrecisionObjectSpecificTimer = 543622400, + SampleFraction = 549585920, + PercentageNotActive = 557909248, + PercentageNotActive100Ns = 558957824, + MultiTimerPercentageActive = 574686464, + MultiTimerPercentageActive100Ns = 575735040, + MultiTimerPercentageNotActive = 591463680, + MultiTimerPercentageNotActive100Ns = 592512256, + AverageTimer32 = 805438464, + ElapsedTime = 807666944, + AverageCount64 = 1073874176, + SampleBase = 1073939457, + AverageBase = 1073939458, + RawBase32 = 1073939459, + RawBase64 = 1073939712, + MultiTimerBase = 1107494144, + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/System.Diagnostics.PerformanceCounter/8.0.0/System.Diagnostics.PerformanceCounter.csproj b/csharp/ql/test/resources/stubs/System.Diagnostics.PerformanceCounter/8.0.0/System.Diagnostics.PerformanceCounter.csproj new file mode 100644 index 00000000000..6ea89ebc26b --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Diagnostics.PerformanceCounter/8.0.0/System.Diagnostics.PerformanceCounter.csproj @@ -0,0 +1,13 @@ + + + net8.0 + true + bin\ + false + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Security.AccessControl/4.7.0/System.Security.AccessControl.csproj b/csharp/ql/test/resources/stubs/System.Security.AccessControl/4.7.0/System.Security.AccessControl.csproj new file mode 100644 index 00000000000..d602f3967ef --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Security.AccessControl/4.7.0/System.Security.AccessControl.csproj @@ -0,0 +1,14 @@ + + + net8.0 + true + bin\ + false + + + + + + + + diff --git a/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/8.0.0/System.Security.Cryptography.ProtectedData.cs b/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/8.0.0/System.Security.Cryptography.ProtectedData.cs new file mode 100644 index 00000000000..2d018b3bc7f --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/8.0.0/System.Security.Cryptography.ProtectedData.cs @@ -0,0 +1,21 @@ +// This file contains auto-generated code. +// Generated from `System.Security.Cryptography.ProtectedData, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a`. +namespace System +{ + namespace Security + { + namespace Cryptography + { + public enum DataProtectionScope + { + CurrentUser = 0, + LocalMachine = 1, + } + public static class ProtectedData + { + public static byte[] Protect(byte[] userData, byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope) => throw null; + public static byte[] Unprotect(byte[] encryptedData, byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope) => throw null; + } + } + } +} diff --git a/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/8.0.0/System.Security.Cryptography.ProtectedData.csproj b/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/8.0.0/System.Security.Cryptography.ProtectedData.csproj new file mode 100644 index 00000000000..61622bc5296 --- /dev/null +++ b/csharp/ql/test/resources/stubs/System.Security.Cryptography.ProtectedData/8.0.0/System.Security.Cryptography.ProtectedData.csproj @@ -0,0 +1,12 @@ + + + net8.0 + true + bin\ + false + + + + + + diff --git a/csharp/scripts/stubs/helpers.py b/csharp/scripts/stubs/helpers.py index 3c6bb8bdd3b..aa82ad3f36b 100644 --- a/csharp/scripts/stubs/helpers.py +++ b/csharp/scripts/stubs/helpers.py @@ -3,6 +3,7 @@ import os import subprocess import json import shutil +import re def run_cmd(cmd, msg="Failed to run command"): print('Running ' + ' '.join(cmd)) @@ -191,7 +192,8 @@ class Generator: if 'dependencies' in data['targets'][target][package]: for dependency in data['targets'][target][package]['dependencies'].keys(): - depVersion = data['targets'][target][package]['dependencies'][dependency] + depString = data['targets'][target][package]['dependencies'][dependency] + depVersion = re.search("(\d+\.\d+\.\d+(-[a-z]+)?)", depString).group(0) pf.write(' \n') diff --git a/csharp/scripts/stubs/make_stubs_all.py b/csharp/scripts/stubs/make_stubs_all.py index fe506bd2e0d..0902a06f51c 100644 --- a/csharp/scripts/stubs/make_stubs_all.py +++ b/csharp/scripts/stubs/make_stubs_all.py @@ -13,10 +13,12 @@ packages = [ "Amazon.Lambda.Core", "Amazon.Lambda.APIGatewayEvents", "Dapper", + "EntityFramework", "Newtonsoft.Json", "NHibernate", "ServiceStack", "ServiceStack.OrmLite.SqlServer", + "System.Data.OleDb", "System.Data.SqlClient", "System.Data.SQLite", ] diff --git a/docs/codeql/codeql-overview/system-requirements.rst b/docs/codeql/codeql-overview/system-requirements.rst index 4788e866303..c9d6d261e15 100644 --- a/docs/codeql/codeql-overview/system-requirements.rst +++ b/docs/codeql/codeql-overview/system-requirements.rst @@ -35,3 +35,7 @@ For Python extraction: - On Linux and macOS, Python 3 must be installed and available on the ``PATH`` as ``python3`` or ``python``. - For Python 2 extraction on Linux and macOS, we also recommend having Python 2 installed and available on the ``PATH`` as ``python2``. - On Windows, the Python launcher must be installed and available on the ``PATH`` as ``py.exe``. + +For Ruby extraction: + +- On Windows, the ``msvcp140.dll`` must be installed and available on the system. This can be installed by downloading the appropriate Microsoft Visual C++ Redistributable for Visual Studio. diff --git a/docs/codeql/conf.py b/docs/codeql/conf.py index da8b9114025..fca3f272647 100644 --- a/docs/codeql/conf.py +++ b/docs/codeql/conf.py @@ -49,10 +49,13 @@ highlight_language = "none" import os import sys +import sphinx as sphinx_mod + + def setup(sphinx): sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from qllexer import QLLexer - sphinx.add_lexer("ql", QLLexer()) + sphinx.add_lexer("ql", QLLexer() if sphinx_mod.version_info[0] <= 3 else QLLexer) # The version of CodeQL for the current release you're documenting, acts as replacement for # |version| and |release|. Not currently used. diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index d7831747b12..4ffbff1e0c4 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.4 + +No user-facing changes. + ## 0.0.3 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.4.md b/go/ql/consistency-queries/change-notes/released/0.0.4.md new file mode 100644 index 00000000000..eefe286a4d8 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.4.md @@ -0,0 +1,3 @@ +## 0.0.4 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index a24b693d1e7..ec411a674bc 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.3 +lastReleaseVersion: 0.0.4 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index c9ca3e11a00..1b8ac8c1be9 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.4-dev +version: 0.0.5-dev groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index e457697b68b..87ef5eb3443 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.5 + +No user-facing changes. + ## 0.7.4 ### Bug Fixes diff --git a/go/ql/lib/change-notes/2023-12-22-minor-analysis-xpath-libxml2.md b/go/ql/lib/change-notes/2023-12-22-minor-analysis-xpath-libxml2.md new file mode 100644 index 00000000000..16baf7f5b07 --- /dev/null +++ b/go/ql/lib/change-notes/2023-12-22-minor-analysis-xpath-libxml2.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The XPath library, which is used for the XPath injection query (`go/xml/xpath-injection`), now includes support for `Parser` sinks from the [libxml2](https://github.com/lestrrat-go/libxml2) package. \ No newline at end of file diff --git a/go/ql/lib/change-notes/released/0.7.5.md b/go/ql/lib/change-notes/released/0.7.5.md new file mode 100644 index 00000000000..b2759d5bd80 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.7.5.md @@ -0,0 +1,3 @@ +## 0.7.5 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index e388f34b4ec..b5108ee0bda 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.4 +lastReleaseVersion: 0.7.5 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 56ef80ceacf..b22fdbf06ab 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.5-dev +version: 0.7.6-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/lib/semmle/go/frameworks/XPath.qll b/go/ql/lib/semmle/go/frameworks/XPath.qll index e3b7282c4e3..5ef6cf0088c 100644 --- a/go/ql/lib/semmle/go/frameworks/XPath.qll +++ b/go/ql/lib/semmle/go/frameworks/XPath.qll @@ -142,6 +142,19 @@ module XPath { } } + /** + * An XPath expression string used in an API function of the + * [lestrrat-go/libxml2](https://github.com/lestrrat-go/libxml2) package. + */ + private class LestratGoLibxml2XPathExpressionString extends Range { + LestratGoLibxml2XPathExpressionString() { + exists(Method m, string name | name.matches("Parse%") | + m.hasQualifiedName(package("github.com/lestrrat-go/libxml2", "parser"), "Parser", name) and + this = m.getACall().getArgument(0) + ) + } + } + /** * An XPath expression string used in an API function of the * [xpathparser](https://github.com/santhosh-tekuri/xpathparser) package. diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index b1ec0f86f3a..504a9aefdde 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.5 + +No user-facing changes. + ## 0.7.4 No user-facing changes. diff --git a/go/ql/src/change-notes/released/0.7.5.md b/go/ql/src/change-notes/released/0.7.5.md new file mode 100644 index 00000000000..b2759d5bd80 --- /dev/null +++ b/go/ql/src/change-notes/released/0.7.5.md @@ -0,0 +1,3 @@ +## 0.7.5 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index e388f34b4ec..b5108ee0bda 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.4 +lastReleaseVersion: 0.7.5 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 06a786b8ee9..4d54626aa34 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.5-dev +version: 0.7.6-dev groups: - go - queries diff --git a/go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected b/go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected index 6d69dadf438..34fbf42f85f 100644 --- a/go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected @@ -1,149 +1,155 @@ edges | XPathInjection.go:13:14:13:19 | selection of Form | XPathInjection.go:13:14:13:35 | call to Get | | XPathInjection.go:13:14:13:35 | call to Get | XPathInjection.go:16:29:16:91 | ...+... | -| tst.go:32:14:32:19 | selection of Form | tst.go:32:14:32:35 | call to Get | -| tst.go:32:14:32:35 | call to Get | tst.go:35:23:35:85 | ...+... | -| tst.go:32:14:32:35 | call to Get | tst.go:38:24:38:86 | ...+... | -| tst.go:32:14:32:35 | call to Get | tst.go:41:24:41:82 | ...+... | -| tst.go:46:14:46:19 | selection of Form | tst.go:46:14:46:35 | call to Get | -| tst.go:46:14:46:35 | call to Get | tst.go:49:26:49:84 | ...+... | -| tst.go:46:14:46:35 | call to Get | tst.go:52:29:52:87 | ...+... | -| tst.go:46:14:46:35 | call to Get | tst.go:55:33:55:91 | ...+... | -| tst.go:46:14:46:35 | call to Get | tst.go:58:30:58:88 | ...+... | -| tst.go:63:14:63:19 | selection of Form | tst.go:63:14:63:35 | call to Get | -| tst.go:63:14:63:35 | call to Get | tst.go:66:25:66:83 | ...+... | -| tst.go:63:14:63:35 | call to Get | tst.go:69:28:69:86 | ...+... | -| tst.go:63:14:63:35 | call to Get | tst.go:72:25:72:83 | ...+... | -| tst.go:63:14:63:35 | call to Get | tst.go:75:34:75:92 | ...+... | -| tst.go:63:14:63:35 | call to Get | tst.go:78:32:78:90 | ...+... | -| tst.go:63:14:63:35 | call to Get | tst.go:81:29:81:87 | ...+... | -| tst.go:63:14:63:35 | call to Get | tst.go:84:23:84:85 | ...+... | -| tst.go:63:14:63:35 | call to Get | tst.go:87:22:87:84 | ...+... | -| tst.go:92:14:92:19 | selection of Form | tst.go:92:14:92:35 | call to Get | -| tst.go:92:14:92:35 | call to Get | tst.go:95:26:95:84 | ...+... | -| tst.go:92:14:92:35 | call to Get | tst.go:98:29:98:87 | ...+... | -| tst.go:92:14:92:35 | call to Get | tst.go:101:33:101:91 | ...+... | -| tst.go:92:14:92:35 | call to Get | tst.go:104:30:104:88 | ...+... | -| tst.go:109:14:109:19 | selection of Form | tst.go:109:14:109:35 | call to Get | -| tst.go:109:14:109:35 | call to Get | tst.go:112:25:112:87 | ...+... | -| tst.go:109:14:109:35 | call to Get | tst.go:115:26:115:88 | ...+... | -| tst.go:120:14:120:19 | selection of Form | tst.go:120:14:120:35 | call to Get | -| tst.go:120:14:120:35 | call to Get | tst.go:124:23:124:126 | ...+... | -| tst.go:120:14:120:35 | call to Get | tst.go:127:24:127:127 | ...+... | -| tst.go:120:14:120:35 | call to Get | tst.go:130:27:130:122 | ...+... | -| tst.go:121:14:121:19 | selection of Form | tst.go:121:14:121:35 | call to Get | -| tst.go:121:14:121:35 | call to Get | tst.go:124:23:124:126 | ...+... | -| tst.go:121:14:121:35 | call to Get | tst.go:127:24:127:127 | ...+... | -| tst.go:121:14:121:35 | call to Get | tst.go:130:27:130:122 | ...+... | -| tst.go:138:14:138:19 | selection of Form | tst.go:138:14:138:35 | call to Get | -| tst.go:138:14:138:35 | call to Get | tst.go:141:27:141:89 | ...+... | -| tst.go:138:14:138:35 | call to Get | tst.go:144:28:144:90 | ...+... | -| tst.go:149:14:149:19 | selection of Form | tst.go:149:14:149:35 | call to Get | -| tst.go:149:14:149:35 | call to Get | tst.go:153:33:153:136 | ...+... | -| tst.go:149:14:149:35 | call to Get | tst.go:156:18:156:121 | ...+... | -| tst.go:149:14:149:35 | call to Get | tst.go:162:31:162:126 | ...+... | -| tst.go:149:14:149:35 | call to Get | tst.go:171:21:171:116 | ...+... | -| tst.go:149:14:149:35 | call to Get | tst.go:180:27:180:122 | ...+... | -| tst.go:150:14:150:19 | selection of Form | tst.go:150:14:150:35 | call to Get | -| tst.go:150:14:150:35 | call to Get | tst.go:153:33:153:136 | ...+... | -| tst.go:150:14:150:35 | call to Get | tst.go:156:18:156:121 | ...+... | -| tst.go:150:14:150:35 | call to Get | tst.go:162:31:162:126 | ...+... | -| tst.go:150:14:150:35 | call to Get | tst.go:171:21:171:116 | ...+... | -| tst.go:150:14:150:35 | call to Get | tst.go:180:27:180:122 | ...+... | +| tst.go:34:14:34:19 | selection of Form | tst.go:34:14:34:35 | call to Get | +| tst.go:34:14:34:35 | call to Get | tst.go:37:23:37:85 | ...+... | +| tst.go:34:14:34:35 | call to Get | tst.go:40:24:40:86 | ...+... | +| tst.go:34:14:34:35 | call to Get | tst.go:43:24:43:82 | ...+... | +| tst.go:48:14:48:19 | selection of Form | tst.go:48:14:48:35 | call to Get | +| tst.go:48:14:48:35 | call to Get | tst.go:51:26:51:84 | ...+... | +| tst.go:48:14:48:35 | call to Get | tst.go:54:29:54:87 | ...+... | +| tst.go:48:14:48:35 | call to Get | tst.go:57:33:57:91 | ...+... | +| tst.go:48:14:48:35 | call to Get | tst.go:60:30:60:88 | ...+... | +| tst.go:65:14:65:19 | selection of Form | tst.go:65:14:65:35 | call to Get | +| tst.go:65:14:65:35 | call to Get | tst.go:68:25:68:83 | ...+... | +| tst.go:65:14:65:35 | call to Get | tst.go:71:28:71:86 | ...+... | +| tst.go:65:14:65:35 | call to Get | tst.go:74:25:74:83 | ...+... | +| tst.go:65:14:65:35 | call to Get | tst.go:77:34:77:92 | ...+... | +| tst.go:65:14:65:35 | call to Get | tst.go:80:32:80:90 | ...+... | +| tst.go:65:14:65:35 | call to Get | tst.go:83:29:83:87 | ...+... | +| tst.go:65:14:65:35 | call to Get | tst.go:86:23:86:85 | ...+... | +| tst.go:65:14:65:35 | call to Get | tst.go:89:22:89:84 | ...+... | +| tst.go:94:14:94:19 | selection of Form | tst.go:94:14:94:35 | call to Get | +| tst.go:94:14:94:35 | call to Get | tst.go:97:26:97:84 | ...+... | +| tst.go:94:14:94:35 | call to Get | tst.go:100:29:100:87 | ...+... | +| tst.go:94:14:94:35 | call to Get | tst.go:103:33:103:91 | ...+... | +| tst.go:94:14:94:35 | call to Get | tst.go:106:30:106:88 | ...+... | +| tst.go:111:14:111:19 | selection of Form | tst.go:111:14:111:35 | call to Get | +| tst.go:111:14:111:35 | call to Get | tst.go:114:25:114:87 | ...+... | +| tst.go:111:14:111:35 | call to Get | tst.go:117:26:117:88 | ...+... | +| tst.go:122:14:122:19 | selection of Form | tst.go:122:14:122:35 | call to Get | +| tst.go:122:14:122:35 | call to Get | tst.go:126:23:126:126 | ...+... | +| tst.go:122:14:122:35 | call to Get | tst.go:129:24:129:127 | ...+... | +| tst.go:122:14:122:35 | call to Get | tst.go:132:27:132:122 | ...+... | +| tst.go:123:14:123:19 | selection of Form | tst.go:123:14:123:35 | call to Get | +| tst.go:123:14:123:35 | call to Get | tst.go:126:23:126:126 | ...+... | +| tst.go:123:14:123:35 | call to Get | tst.go:129:24:129:127 | ...+... | +| tst.go:123:14:123:35 | call to Get | tst.go:132:27:132:122 | ...+... | +| tst.go:140:14:140:19 | selection of Form | tst.go:140:14:140:35 | call to Get | +| tst.go:140:14:140:35 | call to Get | tst.go:143:27:143:89 | ...+... | +| tst.go:140:14:140:35 | call to Get | tst.go:146:28:146:90 | ...+... | +| tst.go:151:14:151:19 | selection of Form | tst.go:151:14:151:35 | call to Get | +| tst.go:151:14:151:35 | call to Get | tst.go:155:33:155:136 | ...+... | +| tst.go:151:14:151:35 | call to Get | tst.go:158:18:158:121 | ...+... | +| tst.go:151:14:151:35 | call to Get | tst.go:164:31:164:126 | ...+... | +| tst.go:151:14:151:35 | call to Get | tst.go:173:21:173:116 | ...+... | +| tst.go:151:14:151:35 | call to Get | tst.go:182:27:182:122 | ...+... | +| tst.go:152:14:152:19 | selection of Form | tst.go:152:14:152:35 | call to Get | +| tst.go:152:14:152:35 | call to Get | tst.go:155:33:155:136 | ...+... | +| tst.go:152:14:152:35 | call to Get | tst.go:158:18:158:121 | ...+... | +| tst.go:152:14:152:35 | call to Get | tst.go:164:31:164:126 | ...+... | +| tst.go:152:14:152:35 | call to Get | tst.go:173:21:173:116 | ...+... | +| tst.go:152:14:152:35 | call to Get | tst.go:182:27:182:122 | ...+... | +| tst.go:193:14:193:19 | selection of Form | tst.go:193:14:193:35 | call to Get | +| tst.go:193:14:193:35 | call to Get | tst.go:198:23:198:85 | ...+... | nodes | XPathInjection.go:13:14:13:19 | selection of Form | semmle.label | selection of Form | | XPathInjection.go:13:14:13:35 | call to Get | semmle.label | call to Get | | XPathInjection.go:16:29:16:91 | ...+... | semmle.label | ...+... | -| tst.go:32:14:32:19 | selection of Form | semmle.label | selection of Form | -| tst.go:32:14:32:35 | call to Get | semmle.label | call to Get | -| tst.go:35:23:35:85 | ...+... | semmle.label | ...+... | -| tst.go:38:24:38:86 | ...+... | semmle.label | ...+... | -| tst.go:41:24:41:82 | ...+... | semmle.label | ...+... | -| tst.go:46:14:46:19 | selection of Form | semmle.label | selection of Form | -| tst.go:46:14:46:35 | call to Get | semmle.label | call to Get | -| tst.go:49:26:49:84 | ...+... | semmle.label | ...+... | -| tst.go:52:29:52:87 | ...+... | semmle.label | ...+... | -| tst.go:55:33:55:91 | ...+... | semmle.label | ...+... | -| tst.go:58:30:58:88 | ...+... | semmle.label | ...+... | -| tst.go:63:14:63:19 | selection of Form | semmle.label | selection of Form | -| tst.go:63:14:63:35 | call to Get | semmle.label | call to Get | -| tst.go:66:25:66:83 | ...+... | semmle.label | ...+... | -| tst.go:69:28:69:86 | ...+... | semmle.label | ...+... | -| tst.go:72:25:72:83 | ...+... | semmle.label | ...+... | -| tst.go:75:34:75:92 | ...+... | semmle.label | ...+... | -| tst.go:78:32:78:90 | ...+... | semmle.label | ...+... | -| tst.go:81:29:81:87 | ...+... | semmle.label | ...+... | -| tst.go:84:23:84:85 | ...+... | semmle.label | ...+... | -| tst.go:87:22:87:84 | ...+... | semmle.label | ...+... | -| tst.go:92:14:92:19 | selection of Form | semmle.label | selection of Form | -| tst.go:92:14:92:35 | call to Get | semmle.label | call to Get | -| tst.go:95:26:95:84 | ...+... | semmle.label | ...+... | -| tst.go:98:29:98:87 | ...+... | semmle.label | ...+... | -| tst.go:101:33:101:91 | ...+... | semmle.label | ...+... | -| tst.go:104:30:104:88 | ...+... | semmle.label | ...+... | -| tst.go:109:14:109:19 | selection of Form | semmle.label | selection of Form | -| tst.go:109:14:109:35 | call to Get | semmle.label | call to Get | -| tst.go:112:25:112:87 | ...+... | semmle.label | ...+... | -| tst.go:115:26:115:88 | ...+... | semmle.label | ...+... | -| tst.go:120:14:120:19 | selection of Form | semmle.label | selection of Form | -| tst.go:120:14:120:35 | call to Get | semmle.label | call to Get | -| tst.go:121:14:121:19 | selection of Form | semmle.label | selection of Form | -| tst.go:121:14:121:35 | call to Get | semmle.label | call to Get | -| tst.go:124:23:124:126 | ...+... | semmle.label | ...+... | -| tst.go:127:24:127:127 | ...+... | semmle.label | ...+... | -| tst.go:130:27:130:122 | ...+... | semmle.label | ...+... | -| tst.go:138:14:138:19 | selection of Form | semmle.label | selection of Form | -| tst.go:138:14:138:35 | call to Get | semmle.label | call to Get | -| tst.go:141:27:141:89 | ...+... | semmle.label | ...+... | -| tst.go:144:28:144:90 | ...+... | semmle.label | ...+... | -| tst.go:149:14:149:19 | selection of Form | semmle.label | selection of Form | -| tst.go:149:14:149:35 | call to Get | semmle.label | call to Get | -| tst.go:150:14:150:19 | selection of Form | semmle.label | selection of Form | -| tst.go:150:14:150:35 | call to Get | semmle.label | call to Get | -| tst.go:153:33:153:136 | ...+... | semmle.label | ...+... | -| tst.go:156:18:156:121 | ...+... | semmle.label | ...+... | -| tst.go:162:31:162:126 | ...+... | semmle.label | ...+... | -| tst.go:171:21:171:116 | ...+... | semmle.label | ...+... | -| tst.go:180:27:180:122 | ...+... | semmle.label | ...+... | +| tst.go:34:14:34:19 | selection of Form | semmle.label | selection of Form | +| tst.go:34:14:34:35 | call to Get | semmle.label | call to Get | +| tst.go:37:23:37:85 | ...+... | semmle.label | ...+... | +| tst.go:40:24:40:86 | ...+... | semmle.label | ...+... | +| tst.go:43:24:43:82 | ...+... | semmle.label | ...+... | +| tst.go:48:14:48:19 | selection of Form | semmle.label | selection of Form | +| tst.go:48:14:48:35 | call to Get | semmle.label | call to Get | +| tst.go:51:26:51:84 | ...+... | semmle.label | ...+... | +| tst.go:54:29:54:87 | ...+... | semmle.label | ...+... | +| tst.go:57:33:57:91 | ...+... | semmle.label | ...+... | +| tst.go:60:30:60:88 | ...+... | semmle.label | ...+... | +| tst.go:65:14:65:19 | selection of Form | semmle.label | selection of Form | +| tst.go:65:14:65:35 | call to Get | semmle.label | call to Get | +| tst.go:68:25:68:83 | ...+... | semmle.label | ...+... | +| tst.go:71:28:71:86 | ...+... | semmle.label | ...+... | +| tst.go:74:25:74:83 | ...+... | semmle.label | ...+... | +| tst.go:77:34:77:92 | ...+... | semmle.label | ...+... | +| tst.go:80:32:80:90 | ...+... | semmle.label | ...+... | +| tst.go:83:29:83:87 | ...+... | semmle.label | ...+... | +| tst.go:86:23:86:85 | ...+... | semmle.label | ...+... | +| tst.go:89:22:89:84 | ...+... | semmle.label | ...+... | +| tst.go:94:14:94:19 | selection of Form | semmle.label | selection of Form | +| tst.go:94:14:94:35 | call to Get | semmle.label | call to Get | +| tst.go:97:26:97:84 | ...+... | semmle.label | ...+... | +| tst.go:100:29:100:87 | ...+... | semmle.label | ...+... | +| tst.go:103:33:103:91 | ...+... | semmle.label | ...+... | +| tst.go:106:30:106:88 | ...+... | semmle.label | ...+... | +| tst.go:111:14:111:19 | selection of Form | semmle.label | selection of Form | +| tst.go:111:14:111:35 | call to Get | semmle.label | call to Get | +| tst.go:114:25:114:87 | ...+... | semmle.label | ...+... | +| tst.go:117:26:117:88 | ...+... | semmle.label | ...+... | +| tst.go:122:14:122:19 | selection of Form | semmle.label | selection of Form | +| tst.go:122:14:122:35 | call to Get | semmle.label | call to Get | +| tst.go:123:14:123:19 | selection of Form | semmle.label | selection of Form | +| tst.go:123:14:123:35 | call to Get | semmle.label | call to Get | +| tst.go:126:23:126:126 | ...+... | semmle.label | ...+... | +| tst.go:129:24:129:127 | ...+... | semmle.label | ...+... | +| tst.go:132:27:132:122 | ...+... | semmle.label | ...+... | +| tst.go:140:14:140:19 | selection of Form | semmle.label | selection of Form | +| tst.go:140:14:140:35 | call to Get | semmle.label | call to Get | +| tst.go:143:27:143:89 | ...+... | semmle.label | ...+... | +| tst.go:146:28:146:90 | ...+... | semmle.label | ...+... | +| tst.go:151:14:151:19 | selection of Form | semmle.label | selection of Form | +| tst.go:151:14:151:35 | call to Get | semmle.label | call to Get | +| tst.go:152:14:152:19 | selection of Form | semmle.label | selection of Form | +| tst.go:152:14:152:35 | call to Get | semmle.label | call to Get | +| tst.go:155:33:155:136 | ...+... | semmle.label | ...+... | +| tst.go:158:18:158:121 | ...+... | semmle.label | ...+... | +| tst.go:164:31:164:126 | ...+... | semmle.label | ...+... | +| tst.go:173:21:173:116 | ...+... | semmle.label | ...+... | +| tst.go:182:27:182:122 | ...+... | semmle.label | ...+... | +| tst.go:193:14:193:19 | selection of Form | semmle.label | selection of Form | +| tst.go:193:14:193:35 | call to Get | semmle.label | call to Get | +| tst.go:198:23:198:85 | ...+... | semmle.label | ...+... | subpaths #select | XPathInjection.go:16:29:16:91 | ...+... | XPathInjection.go:13:14:13:19 | selection of Form | XPathInjection.go:16:29:16:91 | ...+... | XPath expression depends on a $@. | XPathInjection.go:13:14:13:19 | selection of Form | user-provided value | -| tst.go:35:23:35:85 | ...+... | tst.go:32:14:32:19 | selection of Form | tst.go:35:23:35:85 | ...+... | XPath expression depends on a $@. | tst.go:32:14:32:19 | selection of Form | user-provided value | -| tst.go:38:24:38:86 | ...+... | tst.go:32:14:32:19 | selection of Form | tst.go:38:24:38:86 | ...+... | XPath expression depends on a $@. | tst.go:32:14:32:19 | selection of Form | user-provided value | -| tst.go:41:24:41:82 | ...+... | tst.go:32:14:32:19 | selection of Form | tst.go:41:24:41:82 | ...+... | XPath expression depends on a $@. | tst.go:32:14:32:19 | selection of Form | user-provided value | -| tst.go:49:26:49:84 | ...+... | tst.go:46:14:46:19 | selection of Form | tst.go:49:26:49:84 | ...+... | XPath expression depends on a $@. | tst.go:46:14:46:19 | selection of Form | user-provided value | -| tst.go:52:29:52:87 | ...+... | tst.go:46:14:46:19 | selection of Form | tst.go:52:29:52:87 | ...+... | XPath expression depends on a $@. | tst.go:46:14:46:19 | selection of Form | user-provided value | -| tst.go:55:33:55:91 | ...+... | tst.go:46:14:46:19 | selection of Form | tst.go:55:33:55:91 | ...+... | XPath expression depends on a $@. | tst.go:46:14:46:19 | selection of Form | user-provided value | -| tst.go:58:30:58:88 | ...+... | tst.go:46:14:46:19 | selection of Form | tst.go:58:30:58:88 | ...+... | XPath expression depends on a $@. | tst.go:46:14:46:19 | selection of Form | user-provided value | -| tst.go:66:25:66:83 | ...+... | tst.go:63:14:63:19 | selection of Form | tst.go:66:25:66:83 | ...+... | XPath expression depends on a $@. | tst.go:63:14:63:19 | selection of Form | user-provided value | -| tst.go:69:28:69:86 | ...+... | tst.go:63:14:63:19 | selection of Form | tst.go:69:28:69:86 | ...+... | XPath expression depends on a $@. | tst.go:63:14:63:19 | selection of Form | user-provided value | -| tst.go:72:25:72:83 | ...+... | tst.go:63:14:63:19 | selection of Form | tst.go:72:25:72:83 | ...+... | XPath expression depends on a $@. | tst.go:63:14:63:19 | selection of Form | user-provided value | -| tst.go:75:34:75:92 | ...+... | tst.go:63:14:63:19 | selection of Form | tst.go:75:34:75:92 | ...+... | XPath expression depends on a $@. | tst.go:63:14:63:19 | selection of Form | user-provided value | -| tst.go:78:32:78:90 | ...+... | tst.go:63:14:63:19 | selection of Form | tst.go:78:32:78:90 | ...+... | XPath expression depends on a $@. | tst.go:63:14:63:19 | selection of Form | user-provided value | -| tst.go:81:29:81:87 | ...+... | tst.go:63:14:63:19 | selection of Form | tst.go:81:29:81:87 | ...+... | XPath expression depends on a $@. | tst.go:63:14:63:19 | selection of Form | user-provided value | -| tst.go:84:23:84:85 | ...+... | tst.go:63:14:63:19 | selection of Form | tst.go:84:23:84:85 | ...+... | XPath expression depends on a $@. | tst.go:63:14:63:19 | selection of Form | user-provided value | -| tst.go:87:22:87:84 | ...+... | tst.go:63:14:63:19 | selection of Form | tst.go:87:22:87:84 | ...+... | XPath expression depends on a $@. | tst.go:63:14:63:19 | selection of Form | user-provided value | -| tst.go:95:26:95:84 | ...+... | tst.go:92:14:92:19 | selection of Form | tst.go:95:26:95:84 | ...+... | XPath expression depends on a $@. | tst.go:92:14:92:19 | selection of Form | user-provided value | -| tst.go:98:29:98:87 | ...+... | tst.go:92:14:92:19 | selection of Form | tst.go:98:29:98:87 | ...+... | XPath expression depends on a $@. | tst.go:92:14:92:19 | selection of Form | user-provided value | -| tst.go:101:33:101:91 | ...+... | tst.go:92:14:92:19 | selection of Form | tst.go:101:33:101:91 | ...+... | XPath expression depends on a $@. | tst.go:92:14:92:19 | selection of Form | user-provided value | -| tst.go:104:30:104:88 | ...+... | tst.go:92:14:92:19 | selection of Form | tst.go:104:30:104:88 | ...+... | XPath expression depends on a $@. | tst.go:92:14:92:19 | selection of Form | user-provided value | -| tst.go:112:25:112:87 | ...+... | tst.go:109:14:109:19 | selection of Form | tst.go:112:25:112:87 | ...+... | XPath expression depends on a $@. | tst.go:109:14:109:19 | selection of Form | user-provided value | -| tst.go:115:26:115:88 | ...+... | tst.go:109:14:109:19 | selection of Form | tst.go:115:26:115:88 | ...+... | XPath expression depends on a $@. | tst.go:109:14:109:19 | selection of Form | user-provided value | -| tst.go:124:23:124:126 | ...+... | tst.go:120:14:120:19 | selection of Form | tst.go:124:23:124:126 | ...+... | XPath expression depends on a $@. | tst.go:120:14:120:19 | selection of Form | user-provided value | -| tst.go:124:23:124:126 | ...+... | tst.go:121:14:121:19 | selection of Form | tst.go:124:23:124:126 | ...+... | XPath expression depends on a $@. | tst.go:121:14:121:19 | selection of Form | user-provided value | -| tst.go:127:24:127:127 | ...+... | tst.go:120:14:120:19 | selection of Form | tst.go:127:24:127:127 | ...+... | XPath expression depends on a $@. | tst.go:120:14:120:19 | selection of Form | user-provided value | -| tst.go:127:24:127:127 | ...+... | tst.go:121:14:121:19 | selection of Form | tst.go:127:24:127:127 | ...+... | XPath expression depends on a $@. | tst.go:121:14:121:19 | selection of Form | user-provided value | -| tst.go:130:27:130:122 | ...+... | tst.go:120:14:120:19 | selection of Form | tst.go:130:27:130:122 | ...+... | XPath expression depends on a $@. | tst.go:120:14:120:19 | selection of Form | user-provided value | -| tst.go:130:27:130:122 | ...+... | tst.go:121:14:121:19 | selection of Form | tst.go:130:27:130:122 | ...+... | XPath expression depends on a $@. | tst.go:121:14:121:19 | selection of Form | user-provided value | -| tst.go:141:27:141:89 | ...+... | tst.go:138:14:138:19 | selection of Form | tst.go:141:27:141:89 | ...+... | XPath expression depends on a $@. | tst.go:138:14:138:19 | selection of Form | user-provided value | -| tst.go:144:28:144:90 | ...+... | tst.go:138:14:138:19 | selection of Form | tst.go:144:28:144:90 | ...+... | XPath expression depends on a $@. | tst.go:138:14:138:19 | selection of Form | user-provided value | -| tst.go:153:33:153:136 | ...+... | tst.go:149:14:149:19 | selection of Form | tst.go:153:33:153:136 | ...+... | XPath expression depends on a $@. | tst.go:149:14:149:19 | selection of Form | user-provided value | -| tst.go:153:33:153:136 | ...+... | tst.go:150:14:150:19 | selection of Form | tst.go:153:33:153:136 | ...+... | XPath expression depends on a $@. | tst.go:150:14:150:19 | selection of Form | user-provided value | -| tst.go:156:18:156:121 | ...+... | tst.go:149:14:149:19 | selection of Form | tst.go:156:18:156:121 | ...+... | XPath expression depends on a $@. | tst.go:149:14:149:19 | selection of Form | user-provided value | -| tst.go:156:18:156:121 | ...+... | tst.go:150:14:150:19 | selection of Form | tst.go:156:18:156:121 | ...+... | XPath expression depends on a $@. | tst.go:150:14:150:19 | selection of Form | user-provided value | -| tst.go:162:31:162:126 | ...+... | tst.go:149:14:149:19 | selection of Form | tst.go:162:31:162:126 | ...+... | XPath expression depends on a $@. | tst.go:149:14:149:19 | selection of Form | user-provided value | -| tst.go:162:31:162:126 | ...+... | tst.go:150:14:150:19 | selection of Form | tst.go:162:31:162:126 | ...+... | XPath expression depends on a $@. | tst.go:150:14:150:19 | selection of Form | user-provided value | -| tst.go:171:21:171:116 | ...+... | tst.go:149:14:149:19 | selection of Form | tst.go:171:21:171:116 | ...+... | XPath expression depends on a $@. | tst.go:149:14:149:19 | selection of Form | user-provided value | -| tst.go:171:21:171:116 | ...+... | tst.go:150:14:150:19 | selection of Form | tst.go:171:21:171:116 | ...+... | XPath expression depends on a $@. | tst.go:150:14:150:19 | selection of Form | user-provided value | -| tst.go:180:27:180:122 | ...+... | tst.go:149:14:149:19 | selection of Form | tst.go:180:27:180:122 | ...+... | XPath expression depends on a $@. | tst.go:149:14:149:19 | selection of Form | user-provided value | -| tst.go:180:27:180:122 | ...+... | tst.go:150:14:150:19 | selection of Form | tst.go:180:27:180:122 | ...+... | XPath expression depends on a $@. | tst.go:150:14:150:19 | selection of Form | user-provided value | +| tst.go:37:23:37:85 | ...+... | tst.go:34:14:34:19 | selection of Form | tst.go:37:23:37:85 | ...+... | XPath expression depends on a $@. | tst.go:34:14:34:19 | selection of Form | user-provided value | +| tst.go:40:24:40:86 | ...+... | tst.go:34:14:34:19 | selection of Form | tst.go:40:24:40:86 | ...+... | XPath expression depends on a $@. | tst.go:34:14:34:19 | selection of Form | user-provided value | +| tst.go:43:24:43:82 | ...+... | tst.go:34:14:34:19 | selection of Form | tst.go:43:24:43:82 | ...+... | XPath expression depends on a $@. | tst.go:34:14:34:19 | selection of Form | user-provided value | +| tst.go:51:26:51:84 | ...+... | tst.go:48:14:48:19 | selection of Form | tst.go:51:26:51:84 | ...+... | XPath expression depends on a $@. | tst.go:48:14:48:19 | selection of Form | user-provided value | +| tst.go:54:29:54:87 | ...+... | tst.go:48:14:48:19 | selection of Form | tst.go:54:29:54:87 | ...+... | XPath expression depends on a $@. | tst.go:48:14:48:19 | selection of Form | user-provided value | +| tst.go:57:33:57:91 | ...+... | tst.go:48:14:48:19 | selection of Form | tst.go:57:33:57:91 | ...+... | XPath expression depends on a $@. | tst.go:48:14:48:19 | selection of Form | user-provided value | +| tst.go:60:30:60:88 | ...+... | tst.go:48:14:48:19 | selection of Form | tst.go:60:30:60:88 | ...+... | XPath expression depends on a $@. | tst.go:48:14:48:19 | selection of Form | user-provided value | +| tst.go:68:25:68:83 | ...+... | tst.go:65:14:65:19 | selection of Form | tst.go:68:25:68:83 | ...+... | XPath expression depends on a $@. | tst.go:65:14:65:19 | selection of Form | user-provided value | +| tst.go:71:28:71:86 | ...+... | tst.go:65:14:65:19 | selection of Form | tst.go:71:28:71:86 | ...+... | XPath expression depends on a $@. | tst.go:65:14:65:19 | selection of Form | user-provided value | +| tst.go:74:25:74:83 | ...+... | tst.go:65:14:65:19 | selection of Form | tst.go:74:25:74:83 | ...+... | XPath expression depends on a $@. | tst.go:65:14:65:19 | selection of Form | user-provided value | +| tst.go:77:34:77:92 | ...+... | tst.go:65:14:65:19 | selection of Form | tst.go:77:34:77:92 | ...+... | XPath expression depends on a $@. | tst.go:65:14:65:19 | selection of Form | user-provided value | +| tst.go:80:32:80:90 | ...+... | tst.go:65:14:65:19 | selection of Form | tst.go:80:32:80:90 | ...+... | XPath expression depends on a $@. | tst.go:65:14:65:19 | selection of Form | user-provided value | +| tst.go:83:29:83:87 | ...+... | tst.go:65:14:65:19 | selection of Form | tst.go:83:29:83:87 | ...+... | XPath expression depends on a $@. | tst.go:65:14:65:19 | selection of Form | user-provided value | +| tst.go:86:23:86:85 | ...+... | tst.go:65:14:65:19 | selection of Form | tst.go:86:23:86:85 | ...+... | XPath expression depends on a $@. | tst.go:65:14:65:19 | selection of Form | user-provided value | +| tst.go:89:22:89:84 | ...+... | tst.go:65:14:65:19 | selection of Form | tst.go:89:22:89:84 | ...+... | XPath expression depends on a $@. | tst.go:65:14:65:19 | selection of Form | user-provided value | +| tst.go:97:26:97:84 | ...+... | tst.go:94:14:94:19 | selection of Form | tst.go:97:26:97:84 | ...+... | XPath expression depends on a $@. | tst.go:94:14:94:19 | selection of Form | user-provided value | +| tst.go:100:29:100:87 | ...+... | tst.go:94:14:94:19 | selection of Form | tst.go:100:29:100:87 | ...+... | XPath expression depends on a $@. | tst.go:94:14:94:19 | selection of Form | user-provided value | +| tst.go:103:33:103:91 | ...+... | tst.go:94:14:94:19 | selection of Form | tst.go:103:33:103:91 | ...+... | XPath expression depends on a $@. | tst.go:94:14:94:19 | selection of Form | user-provided value | +| tst.go:106:30:106:88 | ...+... | tst.go:94:14:94:19 | selection of Form | tst.go:106:30:106:88 | ...+... | XPath expression depends on a $@. | tst.go:94:14:94:19 | selection of Form | user-provided value | +| tst.go:114:25:114:87 | ...+... | tst.go:111:14:111:19 | selection of Form | tst.go:114:25:114:87 | ...+... | XPath expression depends on a $@. | tst.go:111:14:111:19 | selection of Form | user-provided value | +| tst.go:117:26:117:88 | ...+... | tst.go:111:14:111:19 | selection of Form | tst.go:117:26:117:88 | ...+... | XPath expression depends on a $@. | tst.go:111:14:111:19 | selection of Form | user-provided value | +| tst.go:126:23:126:126 | ...+... | tst.go:122:14:122:19 | selection of Form | tst.go:126:23:126:126 | ...+... | XPath expression depends on a $@. | tst.go:122:14:122:19 | selection of Form | user-provided value | +| tst.go:126:23:126:126 | ...+... | tst.go:123:14:123:19 | selection of Form | tst.go:126:23:126:126 | ...+... | XPath expression depends on a $@. | tst.go:123:14:123:19 | selection of Form | user-provided value | +| tst.go:129:24:129:127 | ...+... | tst.go:122:14:122:19 | selection of Form | tst.go:129:24:129:127 | ...+... | XPath expression depends on a $@. | tst.go:122:14:122:19 | selection of Form | user-provided value | +| tst.go:129:24:129:127 | ...+... | tst.go:123:14:123:19 | selection of Form | tst.go:129:24:129:127 | ...+... | XPath expression depends on a $@. | tst.go:123:14:123:19 | selection of Form | user-provided value | +| tst.go:132:27:132:122 | ...+... | tst.go:122:14:122:19 | selection of Form | tst.go:132:27:132:122 | ...+... | XPath expression depends on a $@. | tst.go:122:14:122:19 | selection of Form | user-provided value | +| tst.go:132:27:132:122 | ...+... | tst.go:123:14:123:19 | selection of Form | tst.go:132:27:132:122 | ...+... | XPath expression depends on a $@. | tst.go:123:14:123:19 | selection of Form | user-provided value | +| tst.go:143:27:143:89 | ...+... | tst.go:140:14:140:19 | selection of Form | tst.go:143:27:143:89 | ...+... | XPath expression depends on a $@. | tst.go:140:14:140:19 | selection of Form | user-provided value | +| tst.go:146:28:146:90 | ...+... | tst.go:140:14:140:19 | selection of Form | tst.go:146:28:146:90 | ...+... | XPath expression depends on a $@. | tst.go:140:14:140:19 | selection of Form | user-provided value | +| tst.go:155:33:155:136 | ...+... | tst.go:151:14:151:19 | selection of Form | tst.go:155:33:155:136 | ...+... | XPath expression depends on a $@. | tst.go:151:14:151:19 | selection of Form | user-provided value | +| tst.go:155:33:155:136 | ...+... | tst.go:152:14:152:19 | selection of Form | tst.go:155:33:155:136 | ...+... | XPath expression depends on a $@. | tst.go:152:14:152:19 | selection of Form | user-provided value | +| tst.go:158:18:158:121 | ...+... | tst.go:151:14:151:19 | selection of Form | tst.go:158:18:158:121 | ...+... | XPath expression depends on a $@. | tst.go:151:14:151:19 | selection of Form | user-provided value | +| tst.go:158:18:158:121 | ...+... | tst.go:152:14:152:19 | selection of Form | tst.go:158:18:158:121 | ...+... | XPath expression depends on a $@. | tst.go:152:14:152:19 | selection of Form | user-provided value | +| tst.go:164:31:164:126 | ...+... | tst.go:151:14:151:19 | selection of Form | tst.go:164:31:164:126 | ...+... | XPath expression depends on a $@. | tst.go:151:14:151:19 | selection of Form | user-provided value | +| tst.go:164:31:164:126 | ...+... | tst.go:152:14:152:19 | selection of Form | tst.go:164:31:164:126 | ...+... | XPath expression depends on a $@. | tst.go:152:14:152:19 | selection of Form | user-provided value | +| tst.go:173:21:173:116 | ...+... | tst.go:151:14:151:19 | selection of Form | tst.go:173:21:173:116 | ...+... | XPath expression depends on a $@. | tst.go:151:14:151:19 | selection of Form | user-provided value | +| tst.go:173:21:173:116 | ...+... | tst.go:152:14:152:19 | selection of Form | tst.go:173:21:173:116 | ...+... | XPath expression depends on a $@. | tst.go:152:14:152:19 | selection of Form | user-provided value | +| tst.go:182:27:182:122 | ...+... | tst.go:151:14:151:19 | selection of Form | tst.go:182:27:182:122 | ...+... | XPath expression depends on a $@. | tst.go:151:14:151:19 | selection of Form | user-provided value | +| tst.go:182:27:182:122 | ...+... | tst.go:152:14:152:19 | selection of Form | tst.go:182:27:182:122 | ...+... | XPath expression depends on a $@. | tst.go:152:14:152:19 | selection of Form | user-provided value | +| tst.go:198:23:198:85 | ...+... | tst.go:193:14:193:19 | selection of Form | tst.go:198:23:198:85 | ...+... | XPath expression depends on a $@. | tst.go:193:14:193:19 | selection of Form | user-provided value | diff --git a/go/ql/test/query-tests/Security/CWE-643/go.mod b/go/ql/test/query-tests/Security/CWE-643/go.mod index fc7016cc9f6..8f574e90cf5 100644 --- a/go/ql/test/query-tests/Security/CWE-643/go.mod +++ b/go/ql/test/query-tests/Security/CWE-643/go.mod @@ -1,6 +1,6 @@ module main -go 1.14 +go 1.21 require ( github.com/ChrisTrenkamp/goxpath v0.0.0-20190607011252-c5096ec8773d @@ -10,5 +10,19 @@ require ( github.com/antchfx/xpath v1.1.5 github.com/go-xmlpath/xmlpath v0.0.0-20150820204837-860cbeca3ebc github.com/jbowtie/gokogiri v0.0.0-20190301021639-37f655d3078f + github.com/lestrrat-go/libxml2 v0.0.0-20231124114421-99c71026c2f5 github.com/santhosh-tekuri/xpathparser v1.0.0 ) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/testify v1.8.4 // indirect + gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 // indirect + gopkg.in/xmlpath.v1 v1.0.0-20140413065638-a146725ea6e7 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + launchpad.net/gocheck v0.0.0-20140225173054-000000000087 // indirect + launchpad.net/xmlpath v0.0.0-20130614043138-000000000004 // indirect +) diff --git a/go/ql/test/query-tests/Security/CWE-643/tst.go b/go/ql/test/query-tests/Security/CWE-643/tst.go index 0b2336d6eda..87ce0e4b6e1 100644 --- a/go/ql/test/query-tests/Security/CWE-643/tst.go +++ b/go/ql/test/query-tests/Security/CWE-643/tst.go @@ -10,6 +10,7 @@ package main //go:generate depstubber -vendor github.com/jbowtie/gokogiri/xml Node //go:generate depstubber -vendor github.com/jbowtie/gokogiri/xpath "" Compile //go:generate depstubber -vendor github.com/santhosh-tekuri/xpathparser "" Parse,MustParse +//go:generate depstubber -vendor github.com/lestrrat-go/libxml2/parser Parser New,XMLParseNoEnt import ( "net/http" @@ -22,6 +23,7 @@ import ( "github.com/go-xmlpath/xmlpath" gokogiriXml "github.com/jbowtie/gokogiri/xml" gokogiriXpath "github.com/jbowtie/gokogiri/xpath" + "github.com/lestrrat-go/libxml2/parser" "github.com/santhosh-tekuri/xpathparser" ) @@ -185,3 +187,13 @@ func testJbowtieGokogiri(r *http.Request, n gokogiriXml.Node) { // OK: This is not flagged, since the creation of `xpath` is already flagged. _ = n.EvalXPathAsBoolean(xpath, nil) } + +func testLestratGoLibxml2(r *http.Request) { + r.ParseForm() + username := r.Form.Get("username") + + p := parser.New(parser.XMLParseNoEnt) + + // BAD: User input used directly in an XPath expression + _, _ = p.ParseString("//users/user[login/text()='" + username + "']/home_dir/text()") +} diff --git a/go/ql/test/query-tests/Security/CWE-643/vendor/github.com/lestrrat-go/libxml2/parser/stub.go b/go/ql/test/query-tests/Security/CWE-643/vendor/github.com/lestrrat-go/libxml2/parser/stub.go new file mode 100644 index 00000000000..57e83756e2f --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-643/vendor/github.com/lestrrat-go/libxml2/parser/stub.go @@ -0,0 +1,42 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/lestrrat-go/libxml2/parser, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/lestrrat-go/libxml2/parser (exports: Parser; functions: New,XMLParseNoEnt) + +// Package parser is a stub of github.com/lestrrat-go/libxml2/parser, generated by depstubber. +package parser + +import ( + io "io" +) + +func New(_ ...Option) *Parser { + return nil +} + +type Option int + +func (_ Option) String() string { + return "" +} + +func (_ *Option) Set(_ ...Option) {} + +type Parser struct { + Options Option +} + +func (_ *Parser) Parse(_ []byte) (interface{}, error) { + return nil, nil +} + +func (_ *Parser) ParseReader(_ io.Reader) (interface{}, error) { + return nil, nil +} + +func (_ *Parser) ParseString(_ string) (interface{}, error) { + return nil, nil +} + +var XMLParseNoEnt Option = 0 diff --git a/go/ql/test/query-tests/Security/CWE-643/vendor/modules.txt b/go/ql/test/query-tests/Security/CWE-643/vendor/modules.txt index ce1e1188bf6..3f70fcb344d 100644 --- a/go/ql/test/query-tests/Security/CWE-643/vendor/modules.txt +++ b/go/ql/test/query-tests/Security/CWE-643/vendor/modules.txt @@ -19,6 +19,39 @@ github.com/go-xmlpath/xmlpath # github.com/jbowtie/gokogiri v0.0.0-20190301021639-37f655d3078f ## explicit github.com/jbowtie/gokogiri +# github.com/lestrrat-go/libxml2 v0.0.0-20231124114421-99c71026c2f5 +## explicit +github.com/lestrrat-go/libxml2 # github.com/santhosh-tekuri/xpathparser v1.0.0 ## explicit github.com/santhosh-tekuri/xpathparser +# github.com/davecgh/go-spew v1.1.1 +## explicit +github.com/davecgh/go-spew +# github.com/pkg/errors v0.9.1 +## explicit +github.com/pkg/errors +# github.com/pmezard/go-difflib v1.0.0 +## explicit +github.com/pmezard/go-difflib +# github.com/stretchr/objx v0.5.0 +## explicit +github.com/stretchr/objx +# github.com/stretchr/testify v1.8.4 +## explicit +github.com/stretchr/testify +# gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 +## explicit +gopkg.in/check.v1 +# gopkg.in/xmlpath.v1 v1.0.0-20140413065638-a146725ea6e7 +## explicit +gopkg.in/xmlpath.v1 +# gopkg.in/yaml.v3 v3.0.1 +## explicit +gopkg.in/yaml.v3 +# launchpad.net/gocheck v0.0.0-20140225173054-000000000087 +## explicit +launchpad.net/gocheck +# launchpad.net/xmlpath v0.0.0-20130614043138-000000000004 +## explicit +launchpad.net/xmlpath diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 6ec17922920..334fbdedac0 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -15,7 +15,7 @@ androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,5,,,,,27,61 antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, ch.ethz.ssh2,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.alibaba.druid.sql,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.alibaba.druid.sql,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1, com.alibaba.fastjson2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, com.amazonaws.auth,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, com.auth0.jwt.algorithms,6,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -28,7 +28,7 @@ com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,,,,,63,24 com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 com.google.common.flogger,29,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.google.common.io,8,,73,,,,,,,,1,,,,,,,,,,,,,,7,,,,,,,,,,,,,,,,,,,,,,,72,1 +com.google.common.io,10,,73,,,,,,,,1,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,,,72,1 com.google.gson,,,44,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30,14 com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, com.jcraft.jsch,5,,1,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1, @@ -56,7 +56,7 @@ freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,, groovy.lang,26,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, groovy.text,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, groovy.util,5,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -hudson,68,9,2647,,4,,,,,,3,,,,4,,,,,,,,,,51,,,,,,,,,6,,,,,,,,,,,,5,4,2571,76 +hudson,71,9,2648,,4,,,,,,3,,,,4,,,,,,,,,,54,,,,,,,,,6,,,,,,,,,,,,5,4,2572,76 io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,, io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 @@ -69,6 +69,7 @@ io.netty.util,2,,23,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,21,2 jakarta.activation,2,,2,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,2, jakarta.faces.context,2,7,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +jakarta.persistence,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,1, jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 @@ -76,17 +77,17 @@ jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, java.awt,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3 java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, java.io,50,1,46,,,,,,,,22,,,,,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,,,1,,44,2 -java.lang,31,3,94,,13,,,,,,,,,,,,,,,,,8,,,5,,,4,,,1,,,,,,,,,,,,,,3,,,57,37 -java.net,15,3,23,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,3,23, +java.lang,32,3,94,,13,,,,,,,,,,,,,,,,,8,,,6,,,4,,,1,,,,,,,,,,,,,,3,,,57,37 +java.net,16,3,23,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,,,,3,23, java.nio,49,,36,,,,,,,,5,,,,,,,,,,,,,,43,,,,,,,,,1,,,,,,,,,,,,,,36, java.security,21,,,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, java.sql,15,1,2,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,1,,,,2, -java.util,45,2,519,,,,,,,,1,,,,,,,,,,,34,,,,,,,5,2,,1,2,,,,,,,,,,,,2,,,45,474 +java.util,47,2,519,,,,,,,,1,,,,,,,,,,,34,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,45,474 javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,7, javax.crypto,19,,4,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, javax.faces.context,2,7,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, -javax.imageio.stream,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +javax.imageio.stream,1,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1, javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 javax.management,2,,1,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, @@ -109,6 +110,8 @@ javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,, jenkins,,,523,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,500,23 jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 kotlin,16,,1849,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,,,,,1836,13 +liquibase.database.jvm,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, +liquibase.statement.core,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, net.schmizz.sshj,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,321,17 net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,, @@ -122,7 +125,7 @@ org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, org.apache.commons.exec,6,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.commons.io,111,,560,,,,,,,,2,,,,,,,,,,,,,,94,,,,,,,,,15,,,,,,,,,,,,,,546,14 +org.apache.commons.io,117,,562,,,,,,,,4,,,,,,,,,,,,,,98,,,,,,,,,15,,,,,,,,,,,,,,548,14 org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,, org.apache.commons.jexl2,15,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.commons.jexl3,15,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -146,6 +149,8 @@ org.apache.cxf.transform,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,, org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.hadoop.fs,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10, org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,, +org.apache.hadoop.hive.ql.exec,1,,1,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.hadoop.hive.ql.metadata,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,,,,,, org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,, org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,, @@ -157,6 +162,7 @@ org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, org.apache.http,48,3,95,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,46,,,,,,,,,,,,,3,86,9 org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,57, +org.apache.ibatis.mapping,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, org.apache.log4j,11,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,,4,4 org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, @@ -165,7 +171,7 @@ org.apache.shiro.mgt,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.sshd.client.session,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.struts.beanvalidation.validation.interceptor,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, org.apache.struts2,14,,3873,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,3,,,,,,,,,,3839,34 -org.apache.tools.ant,11,,,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.tools.ant,12,,,,1,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,, org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,, org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,, @@ -184,6 +190,7 @@ org.jenkins.ui.icon,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48,1 org.jenkins.ui.symbol,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,8 org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 +org.keycloak.models.map.storage,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, org.kohsuke.stapler,20,24,363,,,,,,,,,,,,2,,,,,,,,,,9,,,,,,,,,4,,,,,5,,,,,,,,24,352,11 org.mvel2,16,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,, org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index c423d16677d..03642cec209 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -10,18 +10,18 @@ Java framework & library support Android,``android.*``,52,481,138,,3,67,,, Android extensions,``androidx.*``,5,183,19,,,,,, `Apache Commons Collections `_,"``org.apache.commons.collections``, ``org.apache.commons.collections4``",,1600,,,,,,, - `Apache Commons IO `_,``org.apache.commons.io``,,560,111,94,,,,,15 + `Apache Commons IO `_,``org.apache.commons.io``,,562,117,98,,,,,15 `Apache Commons Lang `_,``org.apache.commons.lang3``,,425,6,,,,,, `Apache Commons Text `_,``org.apache.commons.text``,,272,,,,,,, `Apache HttpComponents `_,"``org.apache.hc.core5.*``, ``org.apache.http``",5,183,122,,3,,,,119 `Apache Log4j 2 `_,``org.apache.logging.log4j``,,8,359,,,,,, - `Google Guava `_,``com.google.common.*``,,730,41,7,,,,, + `Google Guava `_,``com.google.common.*``,,730,43,9,,,,, JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java `_,``org.json``,,236,,,,,,, - Java Standard Library,``java.*``,10,724,226,76,,9,,,18 - Java extensions,"``javax.*``, ``jakarta.*``",67,686,77,4,4,,1,1,4 + Java Standard Library,``java.*``,10,724,230,79,,9,,,19 + Java extensions,"``javax.*``, ``jakarta.*``",67,687,80,5,4,2,1,1,4 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 `Spring `_,``org.springframework.*``,38,481,118,5,,28,14,,35 - Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10503,864,116,6,18,18,,208 - Totals,,308,18921,2421,316,16,122,33,1,401 + Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10506,874,121,6,22,18,,208 + Totals,,308,18927,2446,331,16,128,33,1,402 diff --git a/java/integration-tests-lib/buildless_test_utils.py b/java/integration-tests-lib/buildless_test_utils.py new file mode 100644 index 00000000000..27f43060dae --- /dev/null +++ b/java/integration-tests-lib/buildless_test_utils.py @@ -0,0 +1,37 @@ +import sys +import os.path +import glob + +def extract_fetched_jar_path(l): + if not l.startswith("["): + # Line continuation + return None + bits = l.split(" ", 3) # date time processid logline + if len(bits) >= 4 and bits[3].startswith("Fetch "): + return bits[3][6:].strip() + else: + return None + +def read_fetched_jars(fname): + with open(fname, "r") as f: + lines = [l for l in f] + return [l for l in map(extract_fetched_jar_path, lines) if l is not None] + +def check_buildless_fetches(): + + extractor_logs = glob.glob(os.path.join("test-db", "log", "javac-extractor-*.log")) + fetched_jars = map(read_fetched_jars, extractor_logs) + all_fetched_jars = tuple(sorted([item for sublist in fetched_jars for item in sublist])) + + try: + with open("buildless-fetches.expected", "r") as f: + expected_jar_fetches = tuple(l.strip() for l in f) + except FileNotFoundError: + expected_jar_fetches = tuple() + + if all_fetched_jars != expected_jar_fetches: + print("Expected jar fetch mismatch. Expected:\n%s\n\nActual:\n%s" % ("\n".join(expected_jar_fetches), "\n".join(all_fetched_jars)), file = sys.stderr) + with open("buildless-fetches.actual", "w") as f: + for j in all_fetched_jars: + f.write(j + "\n") + sys.exit(1) diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index 0ca6c4f537e..7af25d5379b 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.10 + +No user-facing changes. + ## 0.0.9 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.10.md b/java/ql/automodel/src/change-notes/released/0.0.10.md new file mode 100644 index 00000000000..22391080fd4 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.10.md @@ -0,0 +1,3 @@ +## 0.0.10 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index ecdd64fbab8..b740014e5ae 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.10 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 046ab6531f2..26601aa3975 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.10-dev +version: 0.0.11-dev groups: - java - automodel diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/buildless-fetches.expected b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/buildless-fetches.expected new file mode 100644 index 00000000000..88e79336758 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/buildless-fetches.expected @@ -0,0 +1,2 @@ +http://localhost:9428/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar +http://localhost:9429/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/pom.xml b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/pom.xml new file mode 100644 index 00000000000..cb0bfee0932 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + + com.mycompany.app + my-app + 1.0-SNAPSHOT + + + 8 + 8 + + + + + first-test-repo + http://localhost:9428/releases + + + + + + com.github.my.other.repo.test + otherreleasetest + 1.0 + + + diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar new file mode 100644 index 00000000000..cc3e449d8f9 Binary files /dev/null and b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar differ diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.md5 b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.md5 new file mode 100644 index 00000000000..3dd98ffce87 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.md5 @@ -0,0 +1 @@ +ff29cc2e7c14353abbfddd2356672fa3 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.sha1 b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.sha1 new file mode 100644 index 00000000000..1a7ed7bff5c --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.jar.sha1 @@ -0,0 +1 @@ +f1e9185fe95c430181ddf79643794ea3762239c4 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom new file mode 100644 index 00000000000..b54f8eae4db --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom @@ -0,0 +1,24 @@ + + 4.0.0 + + com.github.my.other.repo.test + otherreleasetest + 1.0 + + + + second-test-repo + http://localhost:9429/releases + + + + + + com.github.hosted.in.other.repo.test + inotherrepo + 1.0 + + + + diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.md5 b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.md5 new file mode 100644 index 00000000000..0e71f237dbb --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.md5 @@ -0,0 +1 @@ +fb11c1bdba89ffd4a2bedc9c79fe7d66 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.sha1 b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.sha1 new file mode 100644 index 00000000000..3f1f5b5e12b --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo/releases/com/github/my/other/repo/test/otherreleasetest/1.0/otherreleasetest-1.0.pom.sha1 @@ -0,0 +1 @@ +787d45cbeba15d9e29cdd446234497df84138458 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar new file mode 100644 index 00000000000..fb7f0c918b9 Binary files /dev/null and b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar differ diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.md5 b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.md5 new file mode 100644 index 00000000000..4ffbf99b90d --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.md5 @@ -0,0 +1 @@ +db083868a74964a247f8fbe409a19b63 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.sha1 b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.sha1 new file mode 100644 index 00000000000..c09c3da306f --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.jar.sha1 @@ -0,0 +1 @@ +8dea20ff7b3d0525b70f15eb9f0e2bd3056c2070 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom new file mode 100644 index 00000000000..d9a19d3ba3d --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom @@ -0,0 +1,8 @@ + + 4.0.0 + + com.github.hosted.in.other.repo.test + inotherrepo + 1.0 + diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.md5 b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.md5 new file mode 100644 index 00000000000..48acf115ba5 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.md5 @@ -0,0 +1 @@ +2c2065d57ce8aad45b7fa06e5faa2d8b diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.sha1 b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.sha1 new file mode 100644 index 00000000000..8c542ff1c0e --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/repo2/releases/com/github/hosted/in/other/repo/test/inotherrepo/1.0/inotherrepo-1.0.pom.sha1 @@ -0,0 +1 @@ +12d7de7581af2253d33a2b930e3715c797552700 diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/src/main/java/Test.java b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/src/main/java/Test.java new file mode 100644 index 00000000000..035c344e3d5 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/src/main/java/Test.java @@ -0,0 +1,8 @@ +import testpkg.DepClass; +import testpkg2.DepClass2; + +public class Test { + + DepClass2 dc2 = DepClass.getDep2(); + +} diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.expected new file mode 100644 index 00000000000..5179970f7c4 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.expected @@ -0,0 +1,3 @@ +diagnostics +#select +| DepClass | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.py b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.py new file mode 100644 index 00000000000..1e75d97113e --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.py @@ -0,0 +1,19 @@ +import sys + +from create_database_utils import * +from buildless_test_utils import * +import subprocess + +repo_server_process = subprocess.Popen(["python3", "-m", "http.server", "9428"], cwd = "repo") +repo_server_process2 = subprocess.Popen(["python3", "-m", "http.server", "9429"], cwd = "repo2") + +try: + run_codeql_database_create([], lang="java", extra_args=["--extractor-option=buildless=true"], extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) +finally: + try: + repo_server_process.kill() + except Exception as e: + print("Failed to kill server 1:", e, file = sys.stderr) + repo_server_process2.kill() + +check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.ql new file mode 100644 index 00000000000..66153bcc083 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-dependency-different-repository/test.ql @@ -0,0 +1,8 @@ +import java +import semmle.code.java.Diagnostics + +query predicate diagnostics(Diagnostic d) { any() } + +from Class c +where c.getName() = "DepClass" +select c.toString() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitattributes b/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitattributes new file mode 100644 index 00000000000..097f9f98d9e --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitignore b/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitignore new file mode 100644 index 00000000000..1b6985c0094 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/build.gradle b/java/ql/integration-tests/all-platforms/java/buildless-gradle/build.gradle new file mode 100644 index 00000000000..98833538000 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/build.gradle @@ -0,0 +1,16 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This is a general purpose Gradle build. + * To learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.3/samples + */ + +apply plugin: 'java-library' + +repositories { + mavenCentral() +} + +dependencies { + api 'org.apache.commons:commons-math3:3.6.1' +} diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/buildless-fetches.expected b/java/ql/integration-tests/all-platforms/java/buildless-gradle/buildless-fetches.expected new file mode 100644 index 00000000000..631cb23bade --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/buildless-fetches.expected @@ -0,0 +1 @@ +https://repo.maven.apache.org/maven2/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected new file mode 100644 index 00000000000..21075ca021d --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected @@ -0,0 +1,56 @@ +{ + "markdownMessage": "Java buildless mode used build tool Gradle to pick a JDK version and/or to recommend external dependencies.", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/using-build-tool-advice", + "name": "Java buildless mode used build tool Gradle to pick a JDK version and/or to recommend external dependencies" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} +{ + "markdownMessage": "Java buildless mode used the system default JDK.", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/jdk-system-default", + "name": "Java buildless mode used the system default JDK" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} +{ + "markdownMessage": "Java was extracted in buildless mode. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", + "severity": "note", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/mode-active", + "name": "Java was extracted in buildless mode" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": true, + "telemetry": true + } +} +{ + "markdownMessage": "Reading the dependency graph from Gradle build files provided 1 classpath entries", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/depgraph-provided-by-gradle", + "name": "Java buildless mode extracted precise dependency graph information from Gradle" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/buildless-gradle/force_sequential_test_execution new file mode 100644 index 00000000000..b0e2500b259 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/force_sequential_test_execution @@ -0,0 +1,3 @@ +# We currently have a bug where gradle tests become flaky when executed in parallel +# - sometimes, gradle fails to connect to the gradle daemon. +# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.jar b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000000..7f93135c49b Binary files /dev/null and b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.jar differ diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..ac72c34e8ac --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew new file mode 100755 index 00000000000..0adc8e1a532 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew.bat b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew.bat new file mode 100644 index 00000000000..93e3f59f135 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/settings.gradle b/java/ql/integration-tests/all-platforms/java/buildless-gradle/settings.gradle new file mode 100644 index 00000000000..227c1aae87a --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/settings.gradle @@ -0,0 +1,8 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.3/userguide/building_swift_projects.html in the Gradle documentation. + */ + +rootProject.name = 'buildless-gradle' diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/src/main/java/com/fractestexample/Test.java b/java/ql/integration-tests/all-platforms/java/buildless-gradle/src/main/java/com/fractestexample/Test.java new file mode 100644 index 00000000000..f5698a14e5a --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/src/main/java/com/fractestexample/Test.java @@ -0,0 +1,9 @@ +package com.fractestexample; + +import org.apache.commons.math3.fraction.Fraction; + +public class Test { + + public Fraction test() { return Fraction.ONE; } + +} diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.expected new file mode 100644 index 00000000000..05792cb19fc --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.expected @@ -0,0 +1 @@ +| src/main/java/com/fractestexample/Test.java:0:0:0:0 | Test | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.py b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.py new file mode 100644 index 00000000000..bfff65b2fc2 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.py @@ -0,0 +1,8 @@ +from create_database_utils import * +from diagnostics_test_utils import * +from buildless_test_utils import * + +run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) + +check_diagnostics() +check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.ql new file mode 100644 index 00000000000..8317a5a022f --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/test.ql @@ -0,0 +1,5 @@ +import java + +from File f +where f.isSourceFile() +select f diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.actual b/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.actual new file mode 100644 index 00000000000..e3710cc4cb9 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.actual @@ -0,0 +1,26 @@ +https://repo.maven.apache.org/maven2/com/feiniaojin/naaf/naaf-graceful-response-example/1.0/naaf-graceful-response-example-1.0.jar +https://repo.maven.apache.org/maven2/com/github/MoebiusSolutions/avro-registry-in-source/avro-registry-in-source-tests/1.8/avro-registry-in-source-tests-1.8.jar +https://repo.maven.apache.org/maven2/com/github/MoebiusSolutions/avro-registry-in-source/example-project/1.5/example-project-1.5.jar +https://repo.maven.apache.org/maven2/com/intuit/benten/benten-examples/0.1.5/benten-examples-0.1.5.jar +https://repo.maven.apache.org/maven2/com/jakewharton/twirl/sample-runtime/1.2.0/sample-runtime-1.2.0.jar +https://repo.maven.apache.org/maven2/com/mattunderscore/code/generation/specky/plugin-example/0.8.0/plugin-example-0.8.0.jar +https://repo.maven.apache.org/maven2/com/microsoft/tang/tang-test-jarAB/0.9/tang-test-jarAB-0.9.jar +https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-example_2.11/0.1.2/rx-redis-example_2.11-0.1.2.jar +https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-java-example_2.11/0.1.2/rx-redis-java-example_2.11-0.1.2.jar +https://repo.maven.apache.org/maven2/io/github/scrollsyou/example-spring-boot-starter/1.0.0/example-spring-boot-starter-1.0.0.jar +https://repo.maven.apache.org/maven2/io/streamnative/com/example/maven-central-template/server/3.0.0/server-3.0.0.jar +https://repo.maven.apache.org/maven2/no/nav/security/token-validation-ktor-demo/3.1.0/token-validation-ktor-demo-3.1.0.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-fileupload/0.5.10/minijax-example-fileupload-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-inject/0.5.10/minijax-example-inject-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-json/0.5.10/minijax-example-json-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-mustache/0.5.10/minijax-example-mustache-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-petclinic/0.5.10/minijax-example-petclinic-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-security/0.5.10/minijax-example-security-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-ssl/0.5.10/minijax-example-ssl-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-todo-backend/0.5.10/minijax-example-todo-backend-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-websocket/0.5.10/minijax-example-websocket-0.5.10.jar +https://repo.maven.apache.org/maven2/org/scalamock/scalamock-examples_2.10/3.6.0/scalamock-examples_2.10-3.6.0.jar +https://repo.maven.apache.org/maven2/org/somda/sdc/glue-examples/4.0.0/glue-examples-4.0.0.jar +https://repo.maven.apache.org/maven2/us/fatehi/schemacrawler-examplecode/16.20.2/schemacrawler-examplecode-16.20.2.jar +https://repo1.maven.org/maven2/junit/junit/4.11/junit-4.11.jar +https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected new file mode 100644 index 00000000000..e3710cc4cb9 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected @@ -0,0 +1,26 @@ +https://repo.maven.apache.org/maven2/com/feiniaojin/naaf/naaf-graceful-response-example/1.0/naaf-graceful-response-example-1.0.jar +https://repo.maven.apache.org/maven2/com/github/MoebiusSolutions/avro-registry-in-source/avro-registry-in-source-tests/1.8/avro-registry-in-source-tests-1.8.jar +https://repo.maven.apache.org/maven2/com/github/MoebiusSolutions/avro-registry-in-source/example-project/1.5/example-project-1.5.jar +https://repo.maven.apache.org/maven2/com/intuit/benten/benten-examples/0.1.5/benten-examples-0.1.5.jar +https://repo.maven.apache.org/maven2/com/jakewharton/twirl/sample-runtime/1.2.0/sample-runtime-1.2.0.jar +https://repo.maven.apache.org/maven2/com/mattunderscore/code/generation/specky/plugin-example/0.8.0/plugin-example-0.8.0.jar +https://repo.maven.apache.org/maven2/com/microsoft/tang/tang-test-jarAB/0.9/tang-test-jarAB-0.9.jar +https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-example_2.11/0.1.2/rx-redis-example_2.11-0.1.2.jar +https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-java-example_2.11/0.1.2/rx-redis-java-example_2.11-0.1.2.jar +https://repo.maven.apache.org/maven2/io/github/scrollsyou/example-spring-boot-starter/1.0.0/example-spring-boot-starter-1.0.0.jar +https://repo.maven.apache.org/maven2/io/streamnative/com/example/maven-central-template/server/3.0.0/server-3.0.0.jar +https://repo.maven.apache.org/maven2/no/nav/security/token-validation-ktor-demo/3.1.0/token-validation-ktor-demo-3.1.0.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-fileupload/0.5.10/minijax-example-fileupload-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-inject/0.5.10/minijax-example-inject-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-json/0.5.10/minijax-example-json-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-mustache/0.5.10/minijax-example-mustache-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-petclinic/0.5.10/minijax-example-petclinic-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-security/0.5.10/minijax-example-security-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-ssl/0.5.10/minijax-example-ssl-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-todo-backend/0.5.10/minijax-example-todo-backend-0.5.10.jar +https://repo.maven.apache.org/maven2/org/minijax/minijax-example-websocket/0.5.10/minijax-example-websocket-0.5.10.jar +https://repo.maven.apache.org/maven2/org/scalamock/scalamock-examples_2.10/3.6.0/scalamock-examples_2.10-3.6.0.jar +https://repo.maven.apache.org/maven2/org/somda/sdc/glue-examples/4.0.0/glue-examples-4.0.0.jar +https://repo.maven.apache.org/maven2/us/fatehi/schemacrawler-examplecode/16.20.2/schemacrawler-examplecode-16.20.2.jar +https://repo1.maven.org/maven2/junit/junit/4.11/junit-4.11.jar +https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.actual b/java/ql/integration-tests/all-platforms/java/buildless-maven/test.actual new file mode 100644 index 00000000000..cbd09bcf554 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven/test.actual @@ -0,0 +1,10 @@ +#select +| src/main/java/com/example/App.java:0:0:0:0 | App | +| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | +xmlFiles +| pom.xml:0:0:0:0 | pom.xml | +| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml | +| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml | +propertiesFiles +| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties | +| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties | diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.py b/java/ql/integration-tests/all-platforms/java/buildless-maven/test.py index 9b787b196e0..bfff65b2fc2 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven/test.py +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven/test.py @@ -1,8 +1,8 @@ -import sys - from create_database_utils import * from diagnostics_test_utils import * +from buildless_test_utils import * run_codeql_database_create([], lang="java", extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true", "CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"}) check_diagnostics() +check_buildless_fetches() diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/buildless-fetches.expected b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/buildless-fetches.expected new file mode 100644 index 00000000000..b3ab098777e --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/buildless-fetches.expected @@ -0,0 +1 @@ +http://localhost:9427/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py index 55f8f639eae..5fc07d8bd06 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py +++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py @@ -1,6 +1,7 @@ import sys from create_database_utils import * +from buildless_test_utils import * import subprocess repo_server_process = subprocess.Popen(["python3", "-m", "http.server", "9427"], cwd = "repo") @@ -10,3 +11,4 @@ try: finally: repo_server_process.kill() +check_buildless_fetches() diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 945b167bec6..bc07396977a 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.5 + +No user-facing changes. + ## 0.8.4 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/2023-10-24-new-models.md b/java/ql/lib/change-notes/2023-10-24-new-models.md new file mode 100644 index 00000000000..b587721af7b --- /dev/null +++ b/java/ql/lib/change-notes/2023-10-24-new-models.md @@ -0,0 +1,12 @@ +--- +category: minorAnalysis +--- +* Added models for the following packages: + + * com.alibaba.druid.sql.repository + * jakarta.persistence + * jakarta.persistence.criteria + * liquibase.database.jvm + * liquibase.statement.core + * org.apache.ibatis.mapping + * org.keycloak.models.map.storage diff --git a/java/ql/lib/change-notes/2023-10-31-new-models.md b/java/ql/lib/change-notes/2023-10-31-new-models.md new file mode 100644 index 00000000000..1c0fc3daa55 --- /dev/null +++ b/java/ql/lib/change-notes/2023-10-31-new-models.md @@ -0,0 +1,16 @@ +--- +category: minorAnalysis +--- +* Added models for the following packages: + + * com.google.common.io + * hudson + * hudson.console + * java.lang + * java.net + * java.util.logging + * javax.imageio.stream + * org.apache.commons.io + * org.apache.hadoop.hive.ql.exec + * org.apache.hadoop.hive.ql.metadata + * org.apache.tools.ant.taskdefs diff --git a/java/ql/lib/change-notes/2023-12-19-add-replace-methods-to-mapmutator.md b/java/ql/lib/change-notes/2023-12-19-add-replace-methods-to-mapmutator.md new file mode 100644 index 00000000000..9f69b26aefb --- /dev/null +++ b/java/ql/lib/change-notes/2023-12-19-add-replace-methods-to-mapmutator.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added the `Map#replace` and `Map#replaceAll` methods to the `MapMutator` class in `semmle.code.java.Maps`. diff --git a/java/ql/lib/change-notes/released/0.8.5.md b/java/ql/lib/change-notes/released/0.8.5.md new file mode 100644 index 00000000000..cb2a467c35b --- /dev/null +++ b/java/ql/lib/change-notes/released/0.8.5.md @@ -0,0 +1,3 @@ +## 0.8.5 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 32eff3dc9f3..cbe6bc6b7c6 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.4 +lastReleaseVersion: 0.8.5 diff --git a/java/ql/lib/ext/com.alibaba.druid.sql.repository.model.yml b/java/ql/lib/ext/com.alibaba.druid.sql.repository.model.yml new file mode 100644 index 00000000000..663479c52ac --- /dev/null +++ b/java/ql/lib/ext/com.alibaba.druid.sql.repository.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["com.alibaba.druid.sql.repository", "SchemaRepository", True, "console", "(String)", "", "Argument[0]", "sql-injection", "ai-manual"] diff --git a/java/ql/lib/ext/com.google.common.io.model.yml b/java/ql/lib/ext/com.google.common.io.model.yml index 9f3f3307462..8ce06de61b9 100644 --- a/java/ql/lib/ext/com.google.common.io.model.yml +++ b/java/ql/lib/ext/com.google.common.io.model.yml @@ -3,9 +3,11 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["com.google.common.io", "Files", False, "asByteSink", "(File,FileWriteMode[])", "", "Argument[0]", "path-injection", "ai-manual"] - ["com.google.common.io", "Files", False, "asCharSink", "(File,Charset,FileWriteMode[])", "", "Argument[0]", "path-injection", "ai-manual"] - ["com.google.common.io", "Files", False, "asCharSource", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["com.google.common.io", "Files", False, "copy", "(File,OutputStream)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "newWriter", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["com.google.common.io", "Files", False, "readLines", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["com.google.common.io", "Files", False, "toByteArray", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["com.google.common.io", "Files", False, "toString", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/hudson.console.model.yml b/java/ql/lib/ext/hudson.console.model.yml new file mode 100644 index 00000000000..c3634f8246c --- /dev/null +++ b/java/ql/lib/ext/hudson.console.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["hudson.console", "AnnotatedLargeText", True, "AnnotatedLargeText", "(File,Charset,boolean,Object)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/hudson.model.yml b/java/ql/lib/ext/hudson.model.yml index 4565894f020..590b43ad8d7 100644 --- a/java/ql/lib/ext/hudson.model.yml +++ b/java/ql/lib/ext/hudson.model.yml @@ -3,6 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["hudson", "FilePath", False, "tar", "(OutputStream,String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", False, "unzipFrom", "(InputStream)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson", "FilePath", True, "copyFrom", "", "", "Argument[this]", "path-injection", "manual"] - ["hudson", "FilePath", True, "copyFrom", "(FilePath)", "", "Argument[0]", "path-injection", "manual"] - ["hudson", "FilePath", True, "copyFrom", "(URL)", "", "Argument[0]", "path-injection", "manual"] @@ -32,6 +34,7 @@ extensions: - ["hudson", "Launcher$ProcStarter", False, "cmdAsSingleString", "", "", "Argument[0]", "command-injection", "manual"] - ["hudson", "Launcher", True, "launch", "", "", "Argument[0]", "command-injection", "manual"] - ["hudson", "Launcher", True, "launchChannel", "", "", "Argument[0]", "command-injection", "manual"] + - ["hudson", "XmlFile", False, "XmlFile", "(XStream,File)", "", "Argument[1]", "path-injection", "ai-manual"] - addsTo: pack: codeql/java-all extensible: sourceModel diff --git a/java/ql/lib/ext/jakarta.persistence.criteria.model.yml b/java/ql/lib/ext/jakarta.persistence.criteria.model.yml new file mode 100644 index 00000000000..562f68792df --- /dev/null +++ b/java/ql/lib/ext/jakarta.persistence.criteria.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["jakarta.persistence.criteria", "CriteriaBuilder", True, "concat", "(String,Expression)", "", "Argument[1]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/jakarta.persistence.model.yml b/java/ql/lib/ext/jakarta.persistence.model.yml new file mode 100644 index 00000000000..f20c2b225aa --- /dev/null +++ b/java/ql/lib/ext/jakarta.persistence.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["jakarta.persistence", "EntityManager", True, "createNativeQuery", "(String,Class)", "", "Argument[0]", "sql-injection", "ai-manual"] + - ["jakarta.persistence", "EntityManager", True, "createQuery", "(CriteriaDelete)", "", "Argument[0]", "sql-injection", "ai-manual"] diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index 2cbea9c3121..4298ec18bff 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -13,6 +13,7 @@ extensions: - ["java.lang", "ProcessBuilder", False, "directory", "(File)", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "ProcessBuilder", False, "ProcessBuilder", "(List)", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "ProcessBuilder", False, "ProcessBuilder", "(String[])", "", "Argument[0]", "command-injection", "ai-manual"] + - ["java.lang", "ProcessBuilder", False, "redirectError", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.lang", "Runtime", True, "exec", "(String)", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "Runtime", True, "exec", "(String[])", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "Runtime", True, "exec", "(String[],String[])", "", "Argument[0]", "command-injection", "ai-manual"] diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index 64c1d0a96b9..bdc40590fde 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -9,6 +9,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,InetAddress,int)", "", "Argument[2]", "request-forgery", "ai-manual"] - ["java.net", "DatagramSocket", True, "connect", "(SocketAddress)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["java.net", "PasswordAuthentication", False, "PasswordAuthentication", "(String,char[])", "", "Argument[1]", "credentials-password", "hq-generated"] - ["java.net", "Socket", True, "Socket", "(String,int)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/java.util.logging.model.yml b/java/ql/lib/ext/java.util.logging.model.yml index 330a2d469a8..4bd8c6556c9 100644 --- a/java/ql/lib/ext/java.util.logging.model.yml +++ b/java/ql/lib/ext/java.util.logging.model.yml @@ -3,6 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["java.util.logging", "FileHandler", True, "FileHandler", "(String,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.util.logging", "FileHandler", True, "FileHandler", "(String,int,int)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.util.logging", "Logger", True, "config", "", "", "Argument[0]", "log-injection", "manual"] - ["java.util.logging", "Logger", True, "entering", "(String,String)", "", "Argument[0..1]", "log-injection", "manual"] - ["java.util.logging", "Logger", True, "entering", "(String,String,Object)", "", "Argument[0..2]", "log-injection", "manual"] @@ -44,7 +46,6 @@ extensions: - ["java.util.logging", "Logger", False, "getLogger", "(String)", "", "Argument[0]", "ReturnValue.SyntheticField[java.util.logging.Logger.name]", "value", "manual"] - ["java.util.logging", "Logger", False, "getName", "()", "", "Argument[this].SyntheticField[java.util.logging.Logger.name]", "ReturnValue", "value", "manual"] - ["java.util.logging", "LogRecord", False, "LogRecord", "", "", "Argument[1]", "Argument[this]", "taint", "manual"] - - addsTo: pack: codeql/java-all extensible: neutralModel diff --git a/java/ql/lib/ext/javax.imageio.stream.model.yml b/java/ql/lib/ext/javax.imageio.stream.model.yml index f1296b3bfdc..2c25029e4b0 100644 --- a/java/ql/lib/ext/javax.imageio.stream.model.yml +++ b/java/ql/lib/ext/javax.imageio.stream.model.yml @@ -1,7 +1,11 @@ extensions: - - addsTo: pack: codeql/java-all extensible: summaryModel data: - ["javax.imageio.stream", "FileCacheImageInputStream", True, "FileCacheImageInputStream", "(InputStream,File)", "", "Argument[0]", "Argument[this].Element", "taint", "ai-manual"] + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["javax.imageio.stream", "FileImageOutputStream", True, "FileImageOutputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/liquibase.database.jvm.model.yml b/java/ql/lib/ext/liquibase.database.jvm.model.yml new file mode 100644 index 00000000000..53289d49e30 --- /dev/null +++ b/java/ql/lib/ext/liquibase.database.jvm.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["liquibase.database.jvm", "JdbcConnection", True, "prepareStatement", "(String)", "", "Argument[0]", "sql-injection", "ai-manual"] diff --git a/java/ql/lib/ext/liquibase.statement.core.model.yml b/java/ql/lib/ext/liquibase.statement.core.model.yml new file mode 100644 index 00000000000..8bbd4fefc51 --- /dev/null +++ b/java/ql/lib/ext/liquibase.statement.core.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["liquibase.statement.core", "RawSqlStatement", True, "RawSqlStatement", "(String)", "", "Argument[0]", "sql-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.commons.io.model.yml b/java/ql/lib/ext/org.apache.commons.io.model.yml index e80bc525883..20de13c5366 100644 --- a/java/ql/lib/ext/org.apache.commons.io.model.yml +++ b/java/ql/lib/ext/org.apache.commons.io.model.yml @@ -3,6 +3,8 @@ extensions: pack: codeql/java-all extensible: summaryModel data: + - ["org.apache.commons.io", "FileUtils", False, "listFiles", "(File,IOFileFilter,IOFileFilter)", "", "Argument[0]", "ReturnValue.Element", "taint", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", False, "listFiles", "(File,String[],boolean)", "", "Argument[0]", "ReturnValue.Element", "taint", "ai-manual"] # Models that are not yet auto generated or where the generated summaries will # be ignored. # Note that if a callable has any handwritten summary, all generated summaries @@ -16,8 +18,14 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["org.apache.commons.io", "FileUtils", False, "forceMkdir", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", False, "moveDirectory", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", False, "readFileToByteArray", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", False, "writeLines", "(File,String,Collection,String)", "", "Argument[3]", "file-content-store", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", False, "writeStringToFile", "(File,String,Charset,boolean)", "", "Argument[1]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[0]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[1]", "path-injection", "manual"] - ["org.apache.commons.io", "FileUtils", True, "copyToFile", "(InputStream,File)", "", "Argument[0]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", True, "copyToFile", "(InputStream,File)", "", "Argument[1]", "path-injection", "manual"] - ["org.apache.commons.io", "FileUtils", True, "openInputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.commons.io", "IOUtils", False, "resourceToString", "(String,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.hadoop.hive.ql.exec.model.yml b/java/ql/lib/ext/org.apache.hadoop.hive.ql.exec.model.yml new file mode 100644 index 00000000000..e429f111c5b --- /dev/null +++ b/java/ql/lib/ext/org.apache.hadoop.hive.ql.exec.model.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.apache.hadoop.hive.ql.exec", "Utilities", False, "renameOrMoveFilesInParallel", "(Configuration,FileSystem,Path,Path)", "", "Argument[2]", "path-injection", "ai-manual"] + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.apache.hadoop.hive.ql.exec", "Utilities", False, "replaceTaskIdFromFilename", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.hadoop.hive.ql.metadata.model.yml b/java/ql/lib/ext/org.apache.hadoop.hive.ql.metadata.model.yml new file mode 100644 index 00000000000..2915fc3d122 --- /dev/null +++ b/java/ql/lib/ext/org.apache.hadoop.hive.ql.metadata.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.apache.hadoop.hive.ql.metadata", "Hive", False, "copyFiles", "(HiveConf,Path,Path,FileSystem,boolean,boolean,boolean,List,boolean,boolean,boolean,boolean)", "", "Argument[2]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.ibatis.mapping.model.yml b/java/ql/lib/ext/org.apache.ibatis.mapping.model.yml new file mode 100644 index 00000000000..588c7a73be2 --- /dev/null +++ b/java/ql/lib/ext/org.apache.ibatis.mapping.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.apache.ibatis.mapping", "BoundSql", True, "getSql", "()", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml b/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml index aaacf02d58c..4ed020d144f 100644 --- a/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml +++ b/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml @@ -7,5 +7,6 @@ extensions: - ["org.apache.tools.ant.taskdefs", "Copy", True, "setFile", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Copy", True, "setTodir", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Copy", True, "setTofile", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Execute", False, "runCommand", "(Task,String[])", "", "Argument[1]", "command-injection", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Expand", True, "setDest", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Expand", True, "setSrc", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.keycloak.models.map.storage.model.yml b/java/ql/lib/ext/org.keycloak.models.map.storage.model.yml new file mode 100644 index 00000000000..0e264592c3f --- /dev/null +++ b/java/ql/lib/ext/org.keycloak.models.map.storage.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.keycloak.models.map.storage", "MapStorage", True, "delete", "(QueryParameters)", "", "Argument[0]", "sql-injection", "ai-manual"] diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index f5a7a85efe2..77503a51cb3 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.5-dev +version: 0.8.6-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/lib/semmle/code/java/Maps.qll b/java/ql/lib/semmle/code/java/Maps.qll index 95a3da1e4c7..1089e892415 100644 --- a/java/ql/lib/semmle/code/java/Maps.qll +++ b/java/ql/lib/semmle/code/java/Maps.qll @@ -40,7 +40,9 @@ class MapMethod extends Method { /** A method that mutates the map it belongs to. */ class MapMutator extends MapMethod { - MapMutator() { pragma[only_bind_into](this).getName().regexpMatch("(put.*|remove|clear)") } + MapMutator() { + pragma[only_bind_into](this).getName().regexpMatch("(put.*|remove|clear|replace.*)") + } } /** The `size` method of `java.util.Map`. */ diff --git a/java/ql/lib/semmle/code/java/frameworks/Properties.qll b/java/ql/lib/semmle/code/java/frameworks/Properties.qll index b431897a1f5..15e7b687885 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Properties.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Properties.qll @@ -2,6 +2,8 @@ import semmle.code.java.Type private import semmle.code.java.dataflow.FlowSteps +private import semmle.code.configfiles.ConfigFiles +private import semmle.code.java.dataflow.RangeUtils /** * The `java.util.Properties` class. @@ -43,3 +45,22 @@ class PropertiesStoreMethod extends Method { (this.getName().matches("store%") or this.getName() = "save") } } + +/** + * A call to the `getProperty` method of the class `java.util.Properties`. + */ +class PropertiesGetPropertyMethodCall extends MethodCall { + PropertiesGetPropertyMethodCall() { this.getMethod() instanceof PropertiesGetPropertyMethod } + + private ConfigPair getPair() { + this.getArgument(0).(ConstantStringExpr).getStringValue() = result.getNameElement().getName() + } + + /** + * Get the potential string values that can be associated with the given property name. + */ + string getPropertyValue() { + result = this.getPair().getValueElement().getValue() or + result = this.getArgument(1).(ConstantStringExpr).getStringValue() + } +} diff --git a/java/ql/lib/semmle/code/java/security/AndroidCertificatePinningQuery.qll b/java/ql/lib/semmle/code/java/security/AndroidCertificatePinningQuery.qll index 4c42e5a3903..423df068544 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidCertificatePinningQuery.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidCertificatePinningQuery.qll @@ -108,9 +108,9 @@ private class MissingPinningSink extends DataFlow::Node { /** Configuration for finding uses of non trusted URLs. */ private module UntrustedUrlConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node node) { - trustedDomain(_) and exists(string lit | lit = node.asExpr().(CompileTimeConstantExpr).getStringValue() | lit.matches("%://%") and // it's a URL + not lit.regexpMatch("^(classpath|file|jar):.*") and // discard non-network URIs not exists(string dom | trustedDomain(dom) and lit.matches("%" + dom + "%")) ) } @@ -121,16 +121,10 @@ private module UntrustedUrlConfig implements DataFlow::ConfigSig { private module UntrustedUrlFlow = TaintTracking::Global; /** Holds if `node` is a network communication call for which certificate pinning is not implemented. */ -predicate missingPinning(DataFlow::Node node, string domain) { +predicate missingPinning(MissingPinningSink node, string domain) { isAndroid() and - node instanceof MissingPinningSink and - ( - not trustedDomain(_) and domain = "" - or - exists(DataFlow::Node src | - UntrustedUrlFlow::flow(src, node) and - domain = getDomain(src.asExpr()) - ) + exists(DataFlow::Node src | UntrustedUrlFlow::flow(src, node) | + if trustedDomain(_) then domain = getDomain(src.asExpr()) else domain = "" ) } diff --git a/java/ql/lib/semmle/code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll b/java/ql/lib/semmle/code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll index 2ab5e68ba7c..1533b61dd5e 100644 --- a/java/ql/lib/semmle/code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll +++ b/java/ql/lib/semmle/code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll @@ -3,9 +3,18 @@ */ import java +private import semmle.code.configfiles.ConfigFiles private import semmle.code.java.security.Encryption private import semmle.code.java.dataflow.TaintTracking +private import semmle.code.java.dataflow.RangeUtils private import semmle.code.java.dispatch.VirtualDispatch +private import semmle.code.java.frameworks.Properties + +/** A reference to an insecure cryptographic algorithm. */ +abstract class InsecureAlgorithm extends Expr { + /** Gets the string representation of this insecure cryptographic algorithm. */ + abstract string getStringValue(); +} private class ShortStringLiteral extends StringLiteral { ShortStringLiteral() { this.getValue().length() < 100 } @@ -14,16 +23,34 @@ private class ShortStringLiteral extends StringLiteral { /** * A string literal that may refer to an insecure cryptographic algorithm. */ -class InsecureAlgoLiteral extends ShortStringLiteral { +class InsecureAlgoLiteral extends InsecureAlgorithm, ShortStringLiteral { InsecureAlgoLiteral() { - // Algorithm identifiers should be at least two characters. - this.getValue().length() > 1 and exists(string s | s = this.getValue() | + // Algorithm identifiers should be at least two characters. + s.length() > 1 and not s.regexpMatch(getSecureAlgorithmRegex()) and // Exclude results covered by another query. not s.regexpMatch(getInsecureAlgorithmRegex()) ) } + + override string getStringValue() { result = this.getValue() } +} + +/** + * A property access that may refer to an insecure cryptographic algorithm. + */ +class InsecureAlgoProperty extends InsecureAlgorithm, PropertiesGetPropertyMethodCall { + string value; + + InsecureAlgoProperty() { + value = this.getPropertyValue() and + // Since properties pairs are not included in the java/weak-cryptographic-algorithm, + // the check for values from properties files can be less strict than `InsecureAlgoLiteral`. + not value.regexpMatch(getSecureAlgorithmRegex()) + } + + override string getStringValue() { result = value } } private predicate objectToString(MethodCall ma) { @@ -38,7 +65,7 @@ private predicate objectToString(MethodCall ma) { * A taint-tracking configuration to reason about the use of potentially insecure cryptographic algorithms. */ module InsecureCryptoConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n.asExpr() instanceof InsecureAlgoLiteral } + predicate isSource(DataFlow::Node n) { n.asExpr() instanceof InsecureAlgorithm } predicate isSink(DataFlow::Node n) { exists(CryptoAlgoSpec c | n.asExpr() = c.getAlgoSpec()) } diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 3559cb95b4a..58799c443cc 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.5 + +No user-facing changes. + ## 0.8.4 No user-facing changes. diff --git a/java/ql/src/Security/CWE/CWE-327/MaybeBrokenCryptoAlgorithm.ql b/java/ql/src/Security/CWE/CWE-327/MaybeBrokenCryptoAlgorithm.ql index c195c850011..d9decc0fe6d 100644 --- a/java/ql/src/Security/CWE/CWE-327/MaybeBrokenCryptoAlgorithm.ql +++ b/java/ql/src/Security/CWE/CWE-327/MaybeBrokenCryptoAlgorithm.ql @@ -13,16 +13,15 @@ import java import semmle.code.java.security.Encryption +import semmle.code.java.dataflow.DataFlow +import semmle.code.java.frameworks.Properties import semmle.code.java.security.MaybeBrokenCryptoAlgorithmQuery import InsecureCryptoFlow::PathGraph -from - InsecureCryptoFlow::PathNode source, InsecureCryptoFlow::PathNode sink, CryptoAlgoSpec c, - InsecureAlgoLiteral s +from InsecureCryptoFlow::PathNode source, InsecureCryptoFlow::PathNode sink, CryptoAlgoSpec c where sink.getNode().asExpr() = c.getAlgoSpec() and - source.getNode().asExpr() = s and InsecureCryptoFlow::flowPath(source, sink) select c, source, sink, - "Cryptographic algorithm $@ may not be secure, consider using a different algorithm.", s, - s.getValue() + "Cryptographic algorithm $@ may not be secure, consider using a different algorithm.", source, + source.getNode().asExpr().(InsecureAlgorithm).getStringValue() diff --git a/java/ql/src/change-notes/2023-12-12-android-certificate-pinning-precision.md b/java/ql/src/change-notes/2023-12-12-android-certificate-pinning-precision.md new file mode 100644 index 00000000000..ae3742e9f83 --- /dev/null +++ b/java/ql/src/change-notes/2023-12-12-android-certificate-pinning-precision.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `java/android/missing-certificate-pinning` should no longer alert about requests pointing to the local filesystem. diff --git a/java/ql/src/change-notes/2023-12-15-weak-cryptographic-algorithm-from-properties-file.md b/java/ql/src/change-notes/2023-12-15-weak-cryptographic-algorithm-from-properties-file.md new file mode 100644 index 00000000000..9b5436b4b25 --- /dev/null +++ b/java/ql/src/change-notes/2023-12-15-weak-cryptographic-algorithm-from-properties-file.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Modified the `java/potentially-weak-cryptographic-algorithm` query to include the use of weak cryptographic algorithms from configuration values specified in properties files. diff --git a/java/ql/src/change-notes/released/0.8.5.md b/java/ql/src/change-notes/released/0.8.5.md new file mode 100644 index 00000000000..cb2a467c35b --- /dev/null +++ b/java/ql/src/change-notes/released/0.8.5.md @@ -0,0 +1,3 @@ +## 0.8.5 + +No user-facing changes. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 32eff3dc9f3..cbe6bc6b7c6 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.4 +lastReleaseVersion: 0.8.5 diff --git a/java/ql/src/experimental/Security/CWE/CWE-470/BadClassLoader.java b/java/ql/src/experimental/Security/CWE/CWE-470/BadClassLoader.java new file mode 100644 index 00000000000..6fd6b9ccfa5 --- /dev/null +++ b/java/ql/src/experimental/Security/CWE/CWE-470/BadClassLoader.java @@ -0,0 +1,27 @@ +package poc.sample.classloader; + +import android.app.Application; +import android.content.pm.PackageInfo; +import android.content.Context; +import android.util.Log; + +public class BadClassLoader extends Application { + @Override + public void onCreate() { + super.onCreate(); + for (PackageInfo p : getPackageManager().getInstalledPackages(0)) { + try { + if (p.packageName.startsWith("some.package.")) { + Context appContext = createPackageContext(p.packageName, + CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY); + ClassLoader classLoader = appContext.getClassLoader(); + Object result = classLoader.loadClass("some.package.SomeClass") + .getMethod("someMethod") + .invoke(null); + } + } catch (Exception e) { + Log.e("Class loading failed", e.toString()); + } + } + } +} diff --git a/java/ql/src/experimental/Security/CWE/CWE-470/GoodClassLoader.java b/java/ql/src/experimental/Security/CWE/CWE-470/GoodClassLoader.java new file mode 100644 index 00000000000..fea80fc638d --- /dev/null +++ b/java/ql/src/experimental/Security/CWE/CWE-470/GoodClassLoader.java @@ -0,0 +1,31 @@ +package poc.sample.classloader; + +import android.app.Application; +import android.content.pm.PackageInfo; +import android.content.Context; +import android.content.pm.PackageManager; +import android.util.Log; + +public class GoodClassLoader extends Application { + @Override + public void onCreate() { + super.onCreate(); + PackageManager pm = getPackageManager(); + for (PackageInfo p : pm.getInstalledPackages(0)) { + try { + if (p.packageName.startsWith("some.package.") && + (pm.checkSignatures(p.packageName, getApplicationContext().getPackageName()) == PackageManager.SIGNATURE_MATCH) + ) { + Context appContext = createPackageContext(p.packageName, + CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY); + ClassLoader classLoader = appContext.getClassLoader(); + Object result = classLoader.loadClass("some.package.SomeClass") + .getMethod("someMethod") + .invoke(null); + } + } catch (Exception e) { + Log.e("Class loading failed", e.toString()); + } + } + } +} diff --git a/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.qhelp b/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.qhelp new file mode 100644 index 00000000000..861c606486e --- /dev/null +++ b/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.qhelp @@ -0,0 +1,40 @@ + + + + +

    +If an application loads classes or code from another app based solely on its package name without +first checking its package signature, this could allow a malicious app with the same package name +to be loaded through "package namespace squatting". +If the victim user install such malicious app in the same device as the vulnerable app, the vulnerable app would load +classes or code from the malicious app, potentially leading to arbitrary code execution. +

    +
    + + +

    +Verify the package signature in addition to the package name before loading any classes or code from another application. +

    +
    + + +

    +The BadClassLoader class illustrates class loading with the android.content.pm.PackageInfo.packageName.startsWith() method without any check on the package signature. +

    + +

    +The GoodClassLoader class illustrates class loading with correct package signature check using the android.content.pm.PackageManager.checkSignatures() method. +

    + +
    + + + +
  • + +Oversecured (Android: arbitrary code execution via third-party package contexts) + +
  • +
    + +
    diff --git a/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql b/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql new file mode 100644 index 00000000000..2279fa7d71f --- /dev/null +++ b/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql @@ -0,0 +1,88 @@ +/** + * @name Load 3rd party classes or code ('unsafe reflection') without signature check + * @description Loading classes or code from third-party packages without checking the + * package signature could make the application + * susceptible to package namespace squatting attacks, + * potentially leading to arbitrary code execution. + * @problem.severity error + * @precision high + * @kind path-problem + * @id java/android/unsafe-reflection + * @tags security + * experimental + * external/cwe/cwe-470 + */ + +import java +import semmle.code.java.dataflow.TaintTracking +import semmle.code.java.controlflow.Guards +import semmle.code.java.dataflow.SSA +import semmle.code.java.frameworks.android.Intent + +class CheckSignaturesGuard extends Guard instanceof EqualityTest { + MethodCall checkSignatures; + + CheckSignaturesGuard() { + this.getAnOperand() = checkSignatures and + checkSignatures + .getMethod() + .hasQualifiedName("android.content.pm", "PackageManager", "checkSignatures") and + exists(Expr signatureCheckResult | + this.getAnOperand() = signatureCheckResult and signatureCheckResult != checkSignatures + | + signatureCheckResult.(CompileTimeConstantExpr).getIntValue() = 0 or + signatureCheckResult + .(FieldRead) + .getField() + .hasQualifiedName("android.content.pm", "PackageManager", "SIGNATURE_MATCH") + ) + } + + Expr getCheckedExpr() { result = checkSignatures.getArgument(0) } +} + +predicate signatureChecked(Expr safe) { + exists(CheckSignaturesGuard g, SsaVariable v | + v.getAUse() = g.getCheckedExpr() and + safe = v.getAUse() and + g.controls(safe.getBasicBlock(), g.(EqualityTest).polarity()) + ) +} + +module InsecureLoadingConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node src) { + exists(Method m | m = src.asExpr().(MethodCall).getMethod() | + m.getDeclaringType().getASourceSupertype*() instanceof TypeContext and + m.hasName("createPackageContext") and + not signatureChecked(src.asExpr().(MethodCall).getArgument(0)) + ) + } + + predicate isSink(DataFlow::Node sink) { + exists(MethodCall ma | + ma.getMethod().hasQualifiedName("java.lang", "ClassLoader", "loadClass") + | + sink.asExpr() = ma.getQualifier() + ) + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(MethodCall ma, Method m | + ma.getMethod() = m and + m.getDeclaringType().getASourceSupertype*() instanceof TypeContext and + m.hasName("getClassLoader") + | + node1.asExpr() = ma.getQualifier() and + node2.asExpr() = ma + ) + } +} + +module InsecureLoadFlow = TaintTracking::Global; + +import InsecureLoadFlow::PathGraph + +from InsecureLoadFlow::PathNode source, InsecureLoadFlow::PathNode sink +where InsecureLoadFlow::flowPath(source, sink) +select sink.getNode(), source, sink, "Class loaded from a $@ without signature check", + source.getNode(), "third party library" diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index b37f21a5f23..a409cf51016 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.5-dev +version: 0.8.6-dev groups: - java - queries diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/BadClassLoader.java b/java/ql/test/experimental/query-tests/security/CWE-470/BadClassLoader.java new file mode 100644 index 00000000000..6fd6b9ccfa5 --- /dev/null +++ b/java/ql/test/experimental/query-tests/security/CWE-470/BadClassLoader.java @@ -0,0 +1,27 @@ +package poc.sample.classloader; + +import android.app.Application; +import android.content.pm.PackageInfo; +import android.content.Context; +import android.util.Log; + +public class BadClassLoader extends Application { + @Override + public void onCreate() { + super.onCreate(); + for (PackageInfo p : getPackageManager().getInstalledPackages(0)) { + try { + if (p.packageName.startsWith("some.package.")) { + Context appContext = createPackageContext(p.packageName, + CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY); + ClassLoader classLoader = appContext.getClassLoader(); + Object result = classLoader.loadClass("some.package.SomeClass") + .getMethod("someMethod") + .invoke(null); + } + } catch (Exception e) { + Log.e("Class loading failed", e.toString()); + } + } + } +} diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/GoodClassLoader.java b/java/ql/test/experimental/query-tests/security/CWE-470/GoodClassLoader.java new file mode 100644 index 00000000000..fea80fc638d --- /dev/null +++ b/java/ql/test/experimental/query-tests/security/CWE-470/GoodClassLoader.java @@ -0,0 +1,31 @@ +package poc.sample.classloader; + +import android.app.Application; +import android.content.pm.PackageInfo; +import android.content.Context; +import android.content.pm.PackageManager; +import android.util.Log; + +public class GoodClassLoader extends Application { + @Override + public void onCreate() { + super.onCreate(); + PackageManager pm = getPackageManager(); + for (PackageInfo p : pm.getInstalledPackages(0)) { + try { + if (p.packageName.startsWith("some.package.") && + (pm.checkSignatures(p.packageName, getApplicationContext().getPackageName()) == PackageManager.SIGNATURE_MATCH) + ) { + Context appContext = createPackageContext(p.packageName, + CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY); + ClassLoader classLoader = appContext.getClassLoader(); + Object result = classLoader.loadClass("some.package.SomeClass") + .getMethod("someMethod") + .invoke(null); + } + } catch (Exception e) { + Log.e("Class loading failed", e.toString()); + } + } + } +} diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.expected b/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.expected new file mode 100644 index 00000000000..23d52993a91 --- /dev/null +++ b/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.expected @@ -0,0 +1,12 @@ +edges +| BadClassLoader.java:15:42:16:75 | createPackageContext(...) : Context | BadClassLoader.java:17:47:17:56 | appContext : Context | +| BadClassLoader.java:17:47:17:56 | appContext : Context | BadClassLoader.java:17:47:17:73 | getClassLoader(...) : ClassLoader | +| BadClassLoader.java:17:47:17:73 | getClassLoader(...) : ClassLoader | BadClassLoader.java:18:37:18:47 | classLoader | +nodes +| BadClassLoader.java:15:42:16:75 | createPackageContext(...) : Context | semmle.label | createPackageContext(...) : Context | +| BadClassLoader.java:17:47:17:56 | appContext : Context | semmle.label | appContext : Context | +| BadClassLoader.java:17:47:17:73 | getClassLoader(...) : ClassLoader | semmle.label | getClassLoader(...) : ClassLoader | +| BadClassLoader.java:18:37:18:47 | classLoader | semmle.label | classLoader | +subpaths +#select +| BadClassLoader.java:18:37:18:47 | classLoader | BadClassLoader.java:15:42:16:75 | createPackageContext(...) : Context | BadClassLoader.java:18:37:18:47 | classLoader | Class loaded from a $@ without signature check | BadClassLoader.java:15:42:16:75 | createPackageContext(...) | third party library | diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.qlref b/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.qlref new file mode 100644 index 00000000000..27b16b52148 --- /dev/null +++ b/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.qlref @@ -0,0 +1 @@ +experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/options b/java/ql/test/experimental/query-tests/security/CWE-470/options index ba166b547a0..c0d25dba5c2 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-470/options +++ b/java/ql/test/experimental/query-tests/security/CWE-470/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/springframework-5.3.8/ \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/springframework-5.3.8/:${testdir}/../../../../stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/Test.java b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/Test.java index ed141d80521..ac40be7fb39 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/Test.java +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/Test.java @@ -1,7 +1,7 @@ import java.net.URL; import java.net.URLConnection; -class Test{ +class Test { URLConnection test1() throws Exception { return new URL("https://good.example.com").openConnection(); } @@ -9,4 +9,16 @@ class Test{ URLConnection test2() throws Exception { return new URL("https://bad.example.com").openConnection(); // $hasUntrustedResult } -} \ No newline at end of file + + URLConnection test3() throws Exception { + return new URL("classpath:example/directory/test.class").openConnection(); + } + + URLConnection test4() throws Exception { + return new URL("file:///example/file").openConnection(); + } + + URLConnection test5() throws Exception { + return new URL("jar:file:///C:/example/test.jar!/test.xml").openConnection(); + } +} diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/Test.java b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/Test.java index 9f68c503b46..05d58137b9a 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/Test.java +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/Test.java @@ -1,8 +1,20 @@ import java.net.URL; import java.net.URLConnection; -class Test{ +class Test { URLConnection test2() throws Exception { return new URL("https://example.com").openConnection(); // $hasNoTrustedResult } -} \ No newline at end of file + + URLConnection test3() throws Exception { + return new URL("classpath:example/directory/test.class").openConnection(); + } + + URLConnection test4() throws Exception { + return new URL("file:///example/file").openConnection(); + } + + URLConnection test5() throws Exception { + return new URL("jar:file:///C:/example/test.jar!/test.xml").openConnection(); + } +} diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/Test.java b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/Test.java index 6a8ff8ed9d8..22f8d68919e 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/Test.java +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/Test.java @@ -2,16 +2,21 @@ import okhttp3.OkHttpClient; import okhttp3.CertificatePinner; import okhttp3.Request; -class Test{ +class Test { void test1() throws Exception { - CertificatePinner certificatePinner = new CertificatePinner.Builder() - .add("good.example.com", "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") - .build(); - OkHttpClient client = new OkHttpClient.Builder() - .certificatePinner(certificatePinner) - .build(); + CertificatePinner certificatePinner = new CertificatePinner.Builder() + .add("good.example.com", "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") + .build(); + OkHttpClient client = + new OkHttpClient.Builder().certificatePinner(certificatePinner).build(); - client.newCall(new Request.Builder().url("https://good.example.com").build()).execute(); - client.newCall(new Request.Builder().url("https://bad.example.com").build()).execute(); // $hasUntrustedResult + client.newCall(new Request.Builder().url("https://good.example.com").build()).execute(); + client.newCall(new Request.Builder().url("https://bad.example.com").build()).execute(); // $hasUntrustedResult + client.newCall(new Request.Builder().url("classpath:example/directory/test.class").build()) + .execute(); + client.newCall(new Request.Builder().url("file:///example/file").build()).execute(); + client.newCall( + new Request.Builder().url("jar:file:///C:/example/test.jar!/test.xml").build()) + .execute(); } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/Test.java b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/Test.java index fd745a0ca1c..b3c6ef44786 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/Test.java +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/Test.java @@ -8,19 +8,20 @@ import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import android.content.res.Resources; -class Test{ +class Test { void test1(Resources resources) throws Exception { KeyStore keyStore = KeyStore.getInstance("BKS"); keyStore.load(resources.openRawResource(R.raw.cert), null); - TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + TrustManagerFactory tmf = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(keyStore); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, tmf.getTrustManagers(), null); URL url = new URL("http://www.example.com/"); - HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); + HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); urlConnection.setSSLSocketFactory(sslContext.getSocketFactory()); } @@ -29,4 +30,4 @@ class Test{ URL url = new URL("http://www.example.com/"); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); // $hasNoTrustedResult } -} \ No newline at end of file +} diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/Test.java b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/Test.java index 00aa99775c1..159296e3196 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/Test.java +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/Test.java @@ -9,12 +9,13 @@ import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import android.content.res.Resources; -class Test{ +class Test { void init(Resources resources) throws Exception { KeyStore keyStore = KeyStore.getInstance("BKS"); keyStore.load(resources.openRawResource(R.raw.cert), null); - TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + TrustManagerFactory tmf = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(keyStore); SSLContext sslContext = SSLContext.getInstance("TLS"); @@ -25,11 +26,26 @@ class Test{ URLConnection test1() throws Exception { URL url = new URL("http://www.example.com/"); - return url.openConnection(); + return url.openConnection(); } InputStream test2() throws Exception { URL url = new URL("http://www.example.com/"); - return url.openStream(); + return url.openStream(); } -} \ No newline at end of file + + InputStream test3() throws Exception { + URL url = new URL("classpath:example/directory/test.class"); + return url.openStream(); + } + + InputStream test4() throws Exception { + URL url = new URL("file:///example/file"); + return url.openStream(); + } + + InputStream test5() throws Exception { + URL url = new URL("jar:file:///C:/example/test.jar!/test.xml"); + return url.openStream(); + } +} diff --git a/java/ql/test/query-tests/security/CWE-327/semmle/tests/BrokenCryptoAlgorithm.expected b/java/ql/test/query-tests/security/CWE-327/semmle/tests/BrokenCryptoAlgorithm.expected index 19ab13ed803..3965182c6d4 100644 --- a/java/ql/test/query-tests/security/CWE-327/semmle/tests/BrokenCryptoAlgorithm.expected +++ b/java/ql/test/query-tests/security/CWE-327/semmle/tests/BrokenCryptoAlgorithm.expected @@ -1,8 +1,12 @@ edges +| WeakHashing.java:21:86:21:90 | "MD5" : String | WeakHashing.java:21:56:21:91 | getProperty(...) | nodes | Test.java:19:45:19:49 | "DES" | semmle.label | "DES" | | Test.java:42:33:42:37 | "RC2" | semmle.label | "RC2" | +| WeakHashing.java:21:56:21:91 | getProperty(...) | semmle.label | getProperty(...) | +| WeakHashing.java:21:86:21:90 | "MD5" : String | semmle.label | "MD5" : String | subpaths #select | Test.java:19:20:19:50 | getInstance(...) | Test.java:19:45:19:49 | "DES" | Test.java:19:45:19:49 | "DES" | Cryptographic algorithm $@ is weak and should not be used. | Test.java:19:45:19:49 | "DES" | DES | | Test.java:42:14:42:38 | getInstance(...) | Test.java:42:33:42:37 | "RC2" | Test.java:42:33:42:37 | "RC2" | Cryptographic algorithm $@ is weak and should not be used. | Test.java:42:33:42:37 | "RC2" | RC2 | +| WeakHashing.java:21:30:21:92 | getInstance(...) | WeakHashing.java:21:86:21:90 | "MD5" : String | WeakHashing.java:21:56:21:91 | getProperty(...) | Cryptographic algorithm $@ is weak and should not be used. | WeakHashing.java:21:86:21:90 | "MD5" | MD5 | diff --git a/java/ql/test/query-tests/security/CWE-327/semmle/tests/MaybeBrokenCryptoAlgorithm.expected b/java/ql/test/query-tests/security/CWE-327/semmle/tests/MaybeBrokenCryptoAlgorithm.expected index f61954d848a..da6f6312a89 100644 --- a/java/ql/test/query-tests/security/CWE-327/semmle/tests/MaybeBrokenCryptoAlgorithm.expected +++ b/java/ql/test/query-tests/security/CWE-327/semmle/tests/MaybeBrokenCryptoAlgorithm.expected @@ -1,6 +1,12 @@ edges nodes | Test.java:34:48:34:52 | "foo" | semmle.label | "foo" | +| WeakHashing.java:15:55:15:83 | getProperty(...) | semmle.label | getProperty(...) | +| WeakHashing.java:18:56:18:95 | getProperty(...) | semmle.label | getProperty(...) | +| WeakHashing.java:21:56:21:91 | getProperty(...) | semmle.label | getProperty(...) | subpaths #select | Test.java:34:21:34:53 | new SecretKeySpec(...) | Test.java:34:48:34:52 | "foo" | Test.java:34:48:34:52 | "foo" | Cryptographic algorithm $@ may not be secure, consider using a different algorithm. | Test.java:34:48:34:52 | "foo" | foo | +| WeakHashing.java:15:29:15:84 | getInstance(...) | WeakHashing.java:15:55:15:83 | getProperty(...) | WeakHashing.java:15:55:15:83 | getProperty(...) | Cryptographic algorithm $@ may not be secure, consider using a different algorithm. | WeakHashing.java:15:55:15:83 | getProperty(...) | MD5 | +| WeakHashing.java:18:30:18:96 | getInstance(...) | WeakHashing.java:18:56:18:95 | getProperty(...) | WeakHashing.java:18:56:18:95 | getProperty(...) | Cryptographic algorithm $@ may not be secure, consider using a different algorithm. | WeakHashing.java:18:56:18:95 | getProperty(...) | MD5 | +| WeakHashing.java:21:30:21:92 | getInstance(...) | WeakHashing.java:21:56:21:91 | getProperty(...) | WeakHashing.java:21:56:21:91 | getProperty(...) | Cryptographic algorithm $@ may not be secure, consider using a different algorithm. | WeakHashing.java:21:56:21:91 | getProperty(...) | MD5 | diff --git a/java/ql/test/query-tests/security/CWE-327/semmle/tests/WeakHashing.java b/java/ql/test/query-tests/security/CWE-327/semmle/tests/WeakHashing.java new file mode 100644 index 00000000000..6a3565fc141 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-327/semmle/tests/WeakHashing.java @@ -0,0 +1,29 @@ +package test.cwe327.semmle.tests; + +import java.util.Properties; +import java.io.FileInputStream; +import java.io.IOException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class WeakHashing { + void hashing() throws NoSuchAlgorithmException, IOException { + java.util.Properties props = new java.util.Properties(); + props.load(new FileInputStream("example.properties")); + + // BAD: Using a weak hashing algorithm + MessageDigest bad = MessageDigest.getInstance(props.getProperty("hashAlg1")); + + // BAD: Using a weak hashing algorithm even with a secure default + MessageDigest bad2 = MessageDigest.getInstance(props.getProperty("hashAlg1", "SHA-256")); + + // BAD: Using a strong hashing algorithm but with a weak default + MessageDigest bad3 = MessageDigest.getInstance(props.getProperty("hashAlg2", "MD5")); + + // GOOD: Using a strong hashing algorithm + MessageDigest ok = MessageDigest.getInstance(props.getProperty("hashAlg2")); + + // OK: Property does not exist and default is secure + MessageDigest ok2 = MessageDigest.getInstance(props.getProperty("hashAlg3", "SHA-256")); + } +} \ No newline at end of file diff --git a/java/ql/test/query-tests/security/CWE-327/semmle/tests/example.properties b/java/ql/test/query-tests/security/CWE-327/semmle/tests/example.properties new file mode 100644 index 00000000000..512e8090bee --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-327/semmle/tests/example.properties @@ -0,0 +1,2 @@ +hashAlg1=MD5 +hashAlg2=SHA-256 \ No newline at end of file diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index b21f356f7e7..7a9d08a50f2 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.5 + +No user-facing changes. + ## 0.8.4 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.5.md b/javascript/ql/lib/change-notes/released/0.8.5.md new file mode 100644 index 00000000000..cb2a467c35b --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.5.md @@ -0,0 +1,3 @@ +## 0.8.5 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 32eff3dc9f3..cbe6bc6b7c6 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.4 +lastReleaseVersion: 0.8.5 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index e0174892c4c..3fa86edf3e3 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.5-dev +version: 0.8.6-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 2911e1f07cc..1af40bc77b5 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.5 + +No user-facing changes. + ## 0.8.4 ### Minor Analysis Improvements diff --git a/javascript/ql/src/change-notes/released/0.8.5.md b/javascript/ql/src/change-notes/released/0.8.5.md new file mode 100644 index 00000000000..cb2a467c35b --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.5.md @@ -0,0 +1,3 @@ +## 0.8.5 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 32eff3dc9f3..cbe6bc6b7c6 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.4 +lastReleaseVersion: 0.8.5 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 759a1684b19..947d9c61bf7 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.5-dev +version: 0.8.6-dev groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index fe73a080afb..4048fb51cd9 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.5 + +No user-facing changes. + ## 0.7.4 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.5.md b/misc/suite-helpers/change-notes/released/0.7.5.md new file mode 100644 index 00000000000..b2759d5bd80 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.5.md @@ -0,0 +1,3 @@ +## 0.7.5 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index e388f34b4ec..b5108ee0bda 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.4 +lastReleaseVersion: 0.7.5 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 128772ab76a..5ee25056a75 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.5-dev +version: 0.7.6-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/consistency-queries/DataFlowConsistency.ql b/python/ql/consistency-queries/DataFlowConsistency.ql index 0afc4f4884d..f0a0d0356ca 100644 --- a/python/ql/consistency-queries/DataFlowConsistency.ql +++ b/python/ql/consistency-queries/DataFlowConsistency.ql @@ -14,6 +14,8 @@ private module Input implements InputSig { private import Private private import Public + predicate postWithInFlowExclude(Node n) { n instanceof FlowSummaryNode } + predicate argHasPostUpdateExclude(ArgumentNode n) { // TODO: Implement post-updates for *args, see tests added in https://github.com/github/codeql/pull/14936 exists(ArgumentPosition apos | n.argumentOf(_, apos) and apos.isStarArgs(_)) @@ -44,6 +46,13 @@ private module Input implements InputSig { ) } + predicate uniqueEnclosingCallableExclude(Node n) { + // We only have a selection of valid callables. + // For instance, we do not have classes as `DataFlowCallable`s. + not n.(SynthCaptureNode).getSynthesizedCaptureNode().getEnclosingCallable() instanceof Function and + not n.(SynthCaptureNode).getSynthesizedCaptureNode().getEnclosingCallable() instanceof Module + } + predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { not exists(call.getLocation().getFile().getRelativePath()) } @@ -53,7 +62,7 @@ private module Input implements InputSig { } predicate multipleArgumentCallExclude(ArgumentNode arg, DataFlowCall call) { - // since we can have multiple DataFlowCall for a CallNode (for example if can + // since we can have multiple DataFlowCall for a CallNode (for example if it can // resolve to multiple functions), but we only make _one_ ArgumentNode for each // argument in the CallNode, we end up violating this consistency check in those // cases. (see `getCallArg` in DataFlowDispatch.qll) diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index dfe7f2559b0..8a570da513f 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.5 + +No user-facing changes. + ## 0.11.4 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2023-11-21-new-type-tracking-lib.md b/python/ql/lib/change-notes/2023-11-21-new-type-tracking-lib.md new file mode 100644 index 00000000000..aef3146d6f2 --- /dev/null +++ b/python/ql/lib/change-notes/2023-11-21-new-type-tracking-lib.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Python now makes use of the shared type tracking library, exposed as `semmle.python.dataflow.new.TypeTracking`. The existing type tracking library, `semmle.python.dataflow.new.TypeTracker`, has consequently been deprecated. \ No newline at end of file diff --git a/python/ql/lib/change-notes/2023-12-18-support-variable-capture.md b/python/ql/lib/change-notes/2023-12-18-support-variable-capture.md new file mode 100644 index 00000000000..e7aee047fa1 --- /dev/null +++ b/python/ql/lib/change-notes/2023-12-18-support-variable-capture.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Added support for global data-flow through captured variables. \ No newline at end of file diff --git a/python/ql/lib/change-notes/2023-12-20-add-scope-entry-definition-nodes.md b/python/ql/lib/change-notes/2023-12-20-add-scope-entry-definition-nodes.md new file mode 100644 index 00000000000..f2fca008e44 --- /dev/null +++ b/python/ql/lib/change-notes/2023-12-20-add-scope-entry-definition-nodes.md @@ -0,0 +1,5 @@ +--- +category: fix +--- + +- We would previously confuse all captured variables into a single scope entry node. Now they each get their own node so they can be tracked properly. diff --git a/python/ql/lib/change-notes/released/0.11.5.md b/python/ql/lib/change-notes/released/0.11.5.md new file mode 100644 index 00000000000..9d83d989db1 --- /dev/null +++ b/python/ql/lib/change-notes/released/0.11.5.md @@ -0,0 +1,3 @@ +## 0.11.5 + +No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index e8259bcc88e..ca91bf6fce9 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.4 +lastReleaseVersion: 0.11.5 diff --git a/python/ql/lib/experimental/cryptography/utils/CallCfgNodeWithTarget.qll b/python/ql/lib/experimental/cryptography/utils/CallCfgNodeWithTarget.qll index 4d5ecd8f6bd..c475d83d547 100644 --- a/python/ql/lib/experimental/cryptography/utils/CallCfgNodeWithTarget.qll +++ b/python/ql/lib/experimental/cryptography/utils/CallCfgNodeWithTarget.qll @@ -4,9 +4,9 @@ */ import python -private import semmle.python.dataflow.new.internal.TypeTrackerSpecific +private import semmle.python.dataflow.new.internal.TypeTrackingImpl private import semmle.python.ApiGraphs class CallCfgNodeWithTarget extends DataFlow::Node instanceof DataFlow::CallCfgNode { - DataFlow::Node getTarget() { returnStep(result, this) } + DataFlow::Node getTarget() { TypeTrackingInput::returnStep(result, this) } } diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 5e14334de1f..8a0e93bbe8e 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.5-dev +version: 0.11.6-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/lib/semmle/python/dataflow/new/TypeTracker.qll b/python/ql/lib/semmle/python/dataflow/new/TypeTracker.qll index c038e93770d..6def6b0b523 100644 --- a/python/ql/lib/semmle/python/dataflow/new/TypeTracker.qll +++ b/python/ql/lib/semmle/python/dataflow/new/TypeTracker.qll @@ -1,4 +1,6 @@ /** + * DEPRECATED: Use `semmle.python.dataflow.new.TypeTracking` instead. + * * This file acts as a wrapper for `internal.TypeTracker`, exposing some of the functionality with * names that are more appropriate for Python. */ @@ -8,12 +10,14 @@ private import internal.TypeTracker as Internal private import internal.TypeTrackerSpecific as InternalSpecific /** A string that may appear as the name of an attribute or access path. */ -class AttributeName = InternalSpecific::TypeTrackerContent; +deprecated class AttributeName = InternalSpecific::TypeTrackerContent; /** An attribute name, or the empty string (representing no attribute). */ -class OptionalAttributeName = InternalSpecific::OptionalTypeTrackerContent; +deprecated class OptionalAttributeName = InternalSpecific::OptionalTypeTrackerContent; /** + * DEPRECATED: Use `semmle.python.dataflow.new.TypeTracking` instead. + * * The summary of the steps needed to track a value to a given dataflow node. * * This can be used to track objects that implement a certain API in order to @@ -40,7 +44,7 @@ class OptionalAttributeName = InternalSpecific::OptionalTypeTrackerContent; * `t = t2.step(myType(t2), result)`. If you additionally want to track individual * intra-procedural steps, use `t = t2.smallstep(myCallback(t2), result)`. */ -class TypeTracker extends Internal::TypeTracker { +deprecated class TypeTracker extends Internal::TypeTracker { /** * Holds if this is the starting point of type tracking, and the value starts in the attribute named `attrName`. * The type tracking only ends after the attribute has been loaded. @@ -55,12 +59,12 @@ class TypeTracker extends Internal::TypeTracker { string getAttr() { result = this.getContent() } } -module TypeTracker = Internal::TypeTracker; +deprecated module TypeTracker = Internal::TypeTracker; -class StepSummary = Internal::StepSummary; +deprecated class StepSummary = Internal::StepSummary; -module StepSummary = Internal::StepSummary; +deprecated module StepSummary = Internal::StepSummary; -class TypeBackTracker = Internal::TypeBackTracker; +deprecated class TypeBackTracker = Internal::TypeBackTracker; -module TypeBackTracker = Internal::TypeBackTracker; +deprecated module TypeBackTracker = Internal::TypeBackTracker; diff --git a/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll b/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll new file mode 100644 index 00000000000..4f1810f059e --- /dev/null +++ b/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll @@ -0,0 +1,56 @@ +/** + * Provides classes and predicates for simple data-flow reachability suitable + * for tracking types. + */ + +private import internal.TypeTrackingImpl as Impl +import Impl::Shared::TypeTracking + +/** A string that may appear as the name of an attribute or access path. */ +class AttributeName = Impl::TypeTrackingInput::Content; + +/** + * A summary of the steps needed to track a value to a given dataflow node. + * + * This can be used to track objects that implement a certain API in order to + * recognize calls to that API. Note that type-tracking does not by itself provide a + * source/sink relation, that is, it may determine that a node has a given type, + * but it won't determine where that type came from. + * + * It is recommended that all uses of this type are written in the following form, + * for tracking some type `myType`: + * ```ql + * Node myType(TypeTracker tt) { + * tt.start() and + * result = < source of myType > + * or + * exists(TypeTracker tt2 | + * tt = tt2.step(myType(tt2), result) + * ) + * } + * + * Node myType() { myType(TypeTracker::end()).flowsTo(result) } + * ``` + * + * If you want to track individual intra-procedural steps, use `tt2.smallstep` + * instead of `tt2.step`. + */ +class TypeTracker extends Impl::TypeTracker { + /** + * Holds if this is the starting point of type tracking, and the value starts in the attribute named `attrName`. + * The type tracking only ends after the attribute has been loaded. + */ + predicate startInAttr(string attrName) { this.startInContent(attrName) } + + /** + * INTERNAL. DO NOT USE. + * + * Gets the attribute associated with this type tracker. + */ + string getAttr() { + result = this.getContent().asSome() + or + this.getContent().isNone() and + result = "" + } +} diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll index 16410288800..87a278e0f6b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll @@ -37,11 +37,18 @@ private import DataFlowPublic private import DataFlowPrivate private import FlowSummaryImpl as FlowSummaryImpl private import semmle.python.internal.CachedStages -private import semmle.python.dataflow.new.internal.TypeTracker::CallGraphConstruction as CallGraphConstruction +private import semmle.python.dataflow.new.internal.TypeTrackingImpl::CallGraphConstruction as CallGraphConstruction newtype TParameterPosition = /** Used for `self` in methods, and `cls` in classmethods. */ TSelfParameterPosition() or + /** + * This is used for tracking flow through captured variables, and + * we use separate parameter/argument positions in order to distinguish + * "lambda self" from "normal self", as lambdas may also access outer `self` + * variables (through variable capture). + */ + TLambdaSelfParameterPosition() or TPositionalParameterPosition(int index) { index = any(Parameter p).getPosition() or @@ -78,6 +85,9 @@ class ParameterPosition extends TParameterPosition { /** Holds if this position represents a `self`/`cls` parameter. */ predicate isSelf() { this = TSelfParameterPosition() } + /** Holds if this position represents a reference to a lambda itself. Only used for tracking flow through captured variables. */ + predicate isLambdaSelf() { this = TLambdaSelfParameterPosition() } + /** Holds if this position represents a positional parameter at (0-based) `index`. */ predicate isPositional(int index) { this = TPositionalParameterPosition(index) } @@ -109,6 +119,8 @@ class ParameterPosition extends TParameterPosition { string toString() { this.isSelf() and result = "self" or + this.isLambdaSelf() and result = "lambda self" + or exists(int index | this.isPositional(index) and result = "position " + index) or exists(string name | this.isKeyword(name) and result = "keyword " + name) @@ -129,6 +141,13 @@ class ParameterPosition extends TParameterPosition { newtype TArgumentPosition = /** Used for `self` in methods, and `cls` in classmethods. */ TSelfArgumentPosition() or + /** + * This is used for tracking flow through captured variables, and + * we use separate parameter/argument positions in order to distinguish + * "lambda self" from "normal self", as lambdas may also access outer `self` + * variables (through variable capture). + */ + TLambdaSelfArgumentPosition() or TPositionalArgumentPosition(int index) { exists(any(CallNode c).getArg(index)) or @@ -153,6 +172,9 @@ class ArgumentPosition extends TArgumentPosition { /** Holds if this position represents a `self`/`cls` argument. */ predicate isSelf() { this = TSelfArgumentPosition() } + /** Holds if this position represents a lambda `self` argument. Only used for tracking flow through captured variables. */ + predicate isLambdaSelf() { this = TLambdaSelfArgumentPosition() } + /** Holds if this position represents a positional argument at (0-based) `index`. */ predicate isPositional(int index) { this = TPositionalArgumentPosition(index) } @@ -169,6 +191,8 @@ class ArgumentPosition extends TArgumentPosition { string toString() { this.isSelf() and result = "self" or + this.isLambdaSelf() and result = "lambda self" + or exists(int pos | this.isPositional(pos) and result = "position " + pos) or exists(string name | this.isKeyword(name) and result = "keyword " + name) @@ -183,6 +207,8 @@ class ArgumentPosition extends TArgumentPosition { predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { ppos.isSelf() and apos.isSelf() or + ppos.isLambdaSelf() and apos.isLambdaSelf() + or exists(int index | ppos.isPositional(index) and apos.isPositional(index)) or exists(string name | ppos.isKeyword(name) and apos.isKeyword(name)) @@ -1506,6 +1532,37 @@ abstract class ParameterNodeImpl extends Node { } } +/** + * A synthetic parameter representing the values of the variables captured + * by the callable being called. This parameter represents a single object + * where all the values are stored as attributes. + * This is also known as the environment part of a closure. + * + * This is used for tracking flow through captured variables. + */ +class SynthCapturedVariablesParameterNode extends ParameterNodeImpl, + TSynthCapturedVariablesParameterNode +{ + private Function callable; + + SynthCapturedVariablesParameterNode() { this = TSynthCapturedVariablesParameterNode(callable) } + + final Function getCallable() { result = callable } + + override Parameter getParameter() { none() } + + override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { + c = TFunction(callable) and + pos.isLambdaSelf() + } + + override Scope getScope() { result = callable } + + override Location getLocation() { result = callable.getLocation() } + + override string toString() { result = "lambda self in " + callable } +} + /** A parameter for a library callable with a flow summary. */ class SummaryParameterNode extends ParameterNodeImpl, FlowSummaryNode { SummaryParameterNode() { @@ -1580,6 +1637,39 @@ private class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNodeImpl override Node getPreUpdateNode() { result = pre } } +/** + * A synthetic argument representing the values of the variables captured + * by the callable being called. This argument represents a single object + * where all the values are stored as attributes. + * This is also known as the environment part of a closure. + * + * This is used for tracking flow through captured variables. + * + * TODO: + * We might want a synthetic node here, but currently that incurs problems + * with non-monotonic recursion, because of the use of `resolveCall` in the + * char pred. This may be solvable by using + * `CallGraphConstruction::Make` in stead of + * `CallGraphConstruction::Simple::Make` appropriately. + */ +class CapturedVariablesArgumentNode extends CfgNode, ArgumentNode { + CallNode callNode; + + CapturedVariablesArgumentNode() { + node = callNode.getFunction() and + exists(Function target | resolveCall(callNode, target, _) | + target = any(VariableCapture::CapturedVariable v).getACapturingScope() + ) + } + + override string toString() { result = "Capturing closure argument" } + + override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { + callNode = call.getNode() and + pos.isLambdaSelf() + } +} + /** Gets a viable run-time target for the call `call`. */ DataFlowCallable viableCallable(DataFlowCall call) { call instanceof ExtractedDataFlowCall and diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index f1f9668e856..61d84764d87 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -17,6 +17,7 @@ private import semmle.python.Frameworks import MatchUnpacking import IterableUnpacking import DataFlowDispatch +import VariableCapture as VariableCapture /** Gets the callable in which this node occurs. */ DataFlowCallable nodeGetEnclosingCallable(Node n) { result = n.getEnclosingCallable() } @@ -352,7 +353,10 @@ module LocalFlow { // nodeFrom is `y` on first line // nodeTo is `y` on second line exists(EssaDefinition def | - nodeFrom.(CfgNode).getNode() = def.(EssaNodeDefinition).getDefiningNode() and + nodeFrom.(CfgNode).getNode() = def.(EssaNodeDefinition).getDefiningNode() + or + nodeFrom.(ScopeEntryDefinitionNode).getDefinition() = def + | AdjacentUses::firstUse(def, nodeTo.(CfgNode).getNode()) ) or @@ -471,6 +475,8 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { simpleLocalFlowStepForTypetracking(nodeFrom, nodeTo) or summaryFlowSteps(nodeFrom, nodeTo) + or + variableCaptureLocalFlowStep(nodeFrom, nodeTo) } /** @@ -481,8 +487,7 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { * or at runtime when callables in the module are called. */ predicate simpleLocalFlowStepForTypetracking(Node nodeFrom, Node nodeTo) { - IncludePostUpdateFlow::step/2>::step(nodeFrom, - nodeTo) + LocalFlow::localFlowStep(nodeFrom, nodeTo) } private predicate summaryLocalStep(Node nodeFrom, Node nodeTo) { @@ -494,6 +499,16 @@ predicate summaryFlowSteps(Node nodeFrom, Node nodeTo) { IncludePostUpdateFlow::step/2>::step(nodeFrom, nodeTo) } +predicate variableCaptureLocalFlowStep(Node nodeFrom, Node nodeTo) { + // Blindly applying use-use flow can result in a node that steps to itself, for + // example in while-loops. To uphold dataflow consistency checks, we don't want + // that. However, we do want to allow `[post] n` to `n` (to handle while loops), so + // we should only do the filtering after `IncludePostUpdateFlow` has ben applied. + IncludePostUpdateFlow::step/2>::step(nodeFrom, + nodeTo) and + nodeFrom != nodeTo +} + /** `ModuleVariable`s are accessed via jump steps at runtime. */ predicate runtimeJumpStep(Node nodeFrom, Node nodeTo) { // Module variable read @@ -557,7 +572,7 @@ predicate compatibleTypes(DataFlowType t1, DataFlowType t2) { any() } predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() } -predicate localMustFlowStep(Node node1, Node node2) { none() } +predicate localMustFlowStep(Node nodeFrom, Node nodeTo) { none() } /** * Gets the type of `node`. @@ -661,6 +676,38 @@ predicate storeStep(Node nodeFrom, ContentSet c, Node nodeTo) { synthStarArgsElementParameterNodeStoreStep(nodeFrom, c, nodeTo) or synthDictSplatArgumentNodeStoreStep(nodeFrom, c, nodeTo) + or + VariableCapture::storeStep(nodeFrom, c, nodeTo) +} + +/** + * A synthesized data flow node representing a closure object that tracks + * captured variables. + */ +class SynthCaptureNode extends Node, TSynthCaptureNode { + private VariableCapture::Flow::SynthesizedCaptureNode cn; + + SynthCaptureNode() { this = TSynthCaptureNode(cn) } + + /** Gets the `SynthesizedCaptureNode` that this node represents. */ + VariableCapture::Flow::SynthesizedCaptureNode getSynthesizedCaptureNode() { result = cn } + + override Scope getScope() { result = cn.getEnclosingCallable() } + + override Location getLocation() { result = cn.getLocation() } + + override string toString() { result = cn.toString() } +} + +private class SynthCapturePostUpdateNode extends PostUpdateNodeImpl, SynthCaptureNode { + private SynthCaptureNode pre; + + SynthCapturePostUpdateNode() { + VariableCapture::Flow::capturePostUpdateNode(this.getSynthesizedCaptureNode(), + pre.getSynthesizedCaptureNode()) + } + + override Node getPreUpdateNode() { result = pre } } /** @@ -864,6 +911,8 @@ predicate readStep(Node nodeFrom, ContentSet c, Node nodeTo) { nodeTo.(FlowSummaryNode).getSummaryNode()) or synthDictSplatParameterNodeReadStep(nodeFrom, c, nodeTo) + or + VariableCapture::readStep(nodeFrom, c, nodeTo) } /** Data flows from a sequence to a subscript of the sequence. */ @@ -993,6 +1042,10 @@ predicate nodeIsHidden(Node n) { n instanceof SynthDictSplatArgumentNode or n instanceof SynthDictSplatParameterNode + or + n instanceof SynthCaptureNode + or + n instanceof SynthCapturedVariablesParameterNode } class LambdaCallKind = Unit; @@ -1032,6 +1085,11 @@ predicate allowParameterReturnInSelf(ParameterNode p) { p.(ParameterNodeImpl).isParameterOf(c, pos) and FlowSummaryImpl::Private::summaryAllowParameterReturnInSelf(c.asLibraryCallable(), pos) ) + or + exists(Function f | + VariableCapture::Flow::heuristicAllowInstanceParameterReturnInSelf(f) and + p = TSynthCapturedVariablesParameterNode(f) + ) } /** An approximated `Content`. */ diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll index 4ba70f3bbf6..8f08efb0f93 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -4,7 +4,7 @@ private import python private import DataFlowPrivate -import semmle.python.dataflow.new.TypeTracker +import semmle.python.dataflow.new.TypeTracking import Attributes import LocalSources private import semmle.python.essa.SsaCompute @@ -27,9 +27,12 @@ newtype TNode = isExpressionNode(node) or node.getNode() instanceof Pattern - or - node = any(ScopeEntryDefinition def | not def.getScope() instanceof Module).getDefiningNode() } or + /** + * A node corresponding to a scope entry definition. That is, the value of a variable + * as it enters a scope. + */ + TScopeEntryDefinitionNode(ScopeEntryDefinition def) { not def.getScope() instanceof Module } or /** * A synthetic node representing the value of an object before a state change. * @@ -114,6 +117,14 @@ newtype TNode = /** A synthetic node to allow flow to keyword parameters from a `**kwargs` argument. */ TSynthDictSplatParameterNode(DataFlowCallable callable) { exists(ParameterPosition ppos | ppos.isKeyword(_) | exists(callable.getParameter(ppos))) + } or + /** A synthetic node representing a captured variable. */ + TSynthCaptureNode(VariableCapture::Flow::SynthesizedCaptureNode cn) or + /** A synthetic node representing the heap of a function. Used for variable capture. */ + TSynthCapturedVariablesParameterNode(Function f) { + f = any(VariableCapture::CapturedVariable v).getACapturingScope() and + // TODO: Remove this restriction when adding proper support for captured variables in the body of the function we generate for comprehensions + exists(TFunction(f)) } private import semmle.python.internal.CachedStages @@ -257,6 +268,28 @@ class ExprNode extends CfgNode { /** Gets a node corresponding to expression `e`. */ ExprNode exprNode(DataFlowExpr e) { result.getNode().getNode() = e } +/** + * A node corresponding to a scope entry definition. That is, the value of a variable + * as it enters a scope. + */ +class ScopeEntryDefinitionNode extends Node, TScopeEntryDefinitionNode { + ScopeEntryDefinition def; + + ScopeEntryDefinitionNode() { this = TScopeEntryDefinitionNode(def) } + + /** Gets the `ScopeEntryDefinition` associated with this node. */ + ScopeEntryDefinition getDefinition() { result = def } + + /** Gets the source variable represented by this node. */ + SsaSourceVariable getVariable() { result = def.getSourceVariable() } + + override Location getLocation() { result = def.getLocation() } + + override Scope getScope() { result = def.getScope() } + + override string toString() { result = "Entry definition for " + this.getVariable().toString() } +} + /** * The value of a parameter at function entry, viewed as a node in a data * flow graph. @@ -602,7 +635,9 @@ newtype TContent = exists(string input, string output | ModelOutput::relevantSummaryModel(_, _, input, output, _) | attr = [input, output].regexpFind("(?<=(^|\\.)Attribute\\[)[^\\]]+(?=\\])", _, _).trim() ) - } + } or + /** A captured variable. */ + TCapturedVariableContent(VariableCapture::CapturedVariable v) /** * A data-flow value can have associated content. @@ -665,6 +700,18 @@ class AttributeContent extends TAttributeContent, Content { override string toString() { result = "Attribute " + attr } } +/** A captured variable. */ +class CapturedVariableContent extends Content, TCapturedVariableContent { + private VariableCapture::CapturedVariable v; + + CapturedVariableContent() { this = TCapturedVariableContent(v) } + + /** Gets the captured variable. */ + VariableCapture::CapturedVariable getVariable() { result = v } + + override string toString() { result = "captured " + v } +} + /** * An entity that represents a set of `Content`s. * diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index 055a7cee03b..4a55d38edb6 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -12,13 +12,16 @@ private import DataFlowImplSpecific::Public module Input implements InputSig { class SummarizedCallableBase = string; - ArgumentPosition callbackSelfParameterPosition() { none() } + ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() } ReturnKind getStandardReturnValueKind() { any() } string encodeParameterPosition(ParameterPosition pos) { pos.isSelf() and result = "self" or + pos.isLambdaSelf() and + result = "lambda-self" + or exists(int i | pos.isPositional(i) and result = i.toString() @@ -33,6 +36,9 @@ module Input implements InputSig { string encodeArgumentPosition(ArgumentPosition pos) { pos.isSelf() and result = "self" or + pos.isLambdaSelf() and + result = "lambda-self" + or exists(int i | pos.isPositional(i) and result = i.toString() diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/ImportResolution.qll b/python/ql/lib/semmle/python/dataflow/new/internal/ImportResolution.qll index ebbe2f2d0cb..40d9463e546 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/ImportResolution.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/ImportResolution.qll @@ -7,7 +7,7 @@ private import python private import semmle.python.dataflow.new.DataFlow private import semmle.python.dataflow.new.internal.ImportStar -private import semmle.python.dataflow.new.TypeTracker +private import semmle.python.dataflow.new.TypeTracking private import semmle.python.dataflow.new.internal.DataFlowPrivate /** diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll b/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll index d03ea0a877c..34b137b3511 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll @@ -71,7 +71,9 @@ class LocalSourceNode extends Node { or // We include all scope entry definitions, as these act as the local source within the scope they // enter. - this.asCfgNode() = any(ScopeEntryDefinition def).getDefiningNode() + this instanceof ScopeEntryDefinitionNode + or + this instanceof ParameterNode } /** Holds if this `LocalSourceNode` can flow to `nodeTo` in one or more local flow steps. */ @@ -151,7 +153,7 @@ class LocalSourceNode extends Node { * See `TypeBackTracker` for more details about how to use this. */ pragma[inline] - LocalSourceNode backtrack(TypeBackTracker t2, TypeBackTracker t) { t2 = t.step(result, this) } + LocalSourceNode backtrack(TypeBackTracker t2, TypeBackTracker t) { t = t2.step(result, this) } } /** @@ -165,7 +167,7 @@ class LocalSourceNodeNotModuleVariableNode extends LocalSourceNode { LocalSourceNodeNotModuleVariableNode() { this instanceof ExprNode or - this.asCfgNode() = any(ScopeEntryDefinition def).getDefiningNode() + this instanceof ScopeEntryDefinitionNode } } @@ -238,7 +240,7 @@ private module Cached { * Helper predicate for `hasLocalSource`. Removes any steps go to module variable reads, as these * are already local source nodes in their own right. */ - cached + pragma[nomagic] private predicate localSourceFlowStep(Node nodeFrom, Node nodeTo) { simpleLocalFlowStep(nodeFrom, nodeTo) and not nodeTo = any(ModuleVariableNode v).getARead() diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll index 001375b4dc5..8e0feb50c70 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll @@ -8,22 +8,22 @@ private module Cached { * A description of a step on an inter-procedural data flow path. */ cached - newtype TStepSummary = + deprecated newtype TStepSummary = LevelStep() or CallStep() or ReturnStep() or - StoreStep(TypeTrackerContent content) { basicStoreStep(_, _, content) } or - LoadStep(TypeTrackerContent content) { basicLoadStep(_, _, content) } or - LoadStoreStep(TypeTrackerContent load, TypeTrackerContent store) { + deprecated StoreStep(TypeTrackerContent content) { basicStoreStep(_, _, content) } or + deprecated LoadStep(TypeTrackerContent content) { basicLoadStep(_, _, content) } or + deprecated LoadStoreStep(TypeTrackerContent load, TypeTrackerContent store) { basicLoadStoreStep(_, _, load, store) } or - WithContent(ContentFilter filter) { basicWithContentStep(_, _, filter) } or - WithoutContent(ContentFilter filter) { basicWithoutContentStep(_, _, filter) } or + deprecated WithContent(ContentFilter filter) { basicWithContentStep(_, _, filter) } or + deprecated WithoutContent(ContentFilter filter) { basicWithoutContentStep(_, _, filter) } or JumpStep() cached - newtype TTypeTracker = - MkTypeTracker(Boolean hasCall, OptionalTypeTrackerContent content) { + deprecated newtype TTypeTracker = + deprecated MkTypeTracker(Boolean hasCall, OptionalTypeTrackerContent content) { content = noContent() or // Restrict `content` to those that might eventually match a load. @@ -40,8 +40,8 @@ private module Cached { } cached - newtype TTypeBackTracker = - MkTypeBackTracker(Boolean hasReturn, OptionalTypeTrackerContent content) { + deprecated newtype TTypeBackTracker = + deprecated MkTypeBackTracker(Boolean hasReturn, OptionalTypeTrackerContent content) { content = noContent() or // As in MkTypeTracker, restrict `content` to those that might eventually match a store. @@ -57,11 +57,13 @@ private module Cached { /** Gets a type tracker with no content and the call bit set to the given value. */ cached - TypeTracker noContentTypeTracker(boolean hasCall) { result = MkTypeTracker(hasCall, noContent()) } + deprecated TypeTracker noContentTypeTracker(boolean hasCall) { + result = MkTypeTracker(hasCall, noContent()) + } /** Gets the summary resulting from appending `step` to type-tracking summary `tt`. */ cached - TypeTracker append(TypeTracker tt, StepSummary step) { + deprecated TypeTracker append(TypeTracker tt, StepSummary step) { exists(Boolean hasCall, OptionalTypeTrackerContent currentContents | tt = MkTypeTracker(hasCall, currentContents) | @@ -108,13 +110,13 @@ private module Cached { } pragma[nomagic] - private TypeBackTracker noContentTypeBackTracker(boolean hasReturn) { + deprecated private TypeBackTracker noContentTypeBackTracker(boolean hasReturn) { result = MkTypeBackTracker(hasReturn, noContent()) } /** Gets the summary resulting from prepending `step` to this type-tracking summary. */ cached - TypeBackTracker prepend(TypeBackTracker tbt, StepSummary step) { + deprecated TypeBackTracker prepend(TypeBackTracker tbt, StepSummary step) { exists(Boolean hasReturn, OptionalTypeTrackerContent content | tbt = MkTypeBackTracker(hasReturn, content) | @@ -167,7 +169,9 @@ private module Cached { * Steps contained in this predicate should _not_ depend on the call graph. */ cached - predicate stepNoCall(TypeTrackingNode nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { + deprecated predicate stepNoCall( + TypeTrackingNode nodeFrom, TypeTrackingNode nodeTo, StepSummary summary + ) { exists(Node mid | nodeFrom.flowsTo(mid) and smallstepNoCall(mid, nodeTo, summary)) } @@ -176,12 +180,14 @@ private module Cached { * inter-procedural step from `nodeFrom` to `nodeTo`. */ cached - predicate stepCall(TypeTrackingNode nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { + deprecated predicate stepCall( + TypeTrackingNode nodeFrom, TypeTrackingNode nodeTo, StepSummary summary + ) { exists(Node mid | nodeFrom.flowsTo(mid) and smallstepCall(mid, nodeTo, summary)) } cached - predicate smallstepNoCall(Node nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { + deprecated predicate smallstepNoCall(Node nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { jumpStep(nodeFrom, nodeTo) and summary = JumpStep() or @@ -210,7 +216,7 @@ private module Cached { } cached - predicate smallstepCall(Node nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { + deprecated predicate smallstepCall(Node nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { callStep(nodeFrom, nodeTo) and summary = CallStep() or returnStep(nodeFrom, nodeTo) and @@ -223,25 +229,27 @@ private module Cached { private import Cached -private predicate step(TypeTrackingNode nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { +deprecated private predicate step( + TypeTrackingNode nodeFrom, TypeTrackingNode nodeTo, StepSummary summary +) { stepNoCall(nodeFrom, nodeTo, summary) or stepCall(nodeFrom, nodeTo, summary) } pragma[nomagic] -private predicate stepProj(TypeTrackingNode nodeFrom, StepSummary summary) { +deprecated private predicate stepProj(TypeTrackingNode nodeFrom, StepSummary summary) { step(nodeFrom, _, summary) } -private predicate smallstep(Node nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { +deprecated private predicate smallstep(Node nodeFrom, TypeTrackingNode nodeTo, StepSummary summary) { smallstepNoCall(nodeFrom, nodeTo, summary) or smallstepCall(nodeFrom, nodeTo, summary) } pragma[nomagic] -private predicate smallstepProj(Node nodeFrom, StepSummary summary) { +deprecated private predicate smallstepProj(Node nodeFrom, StepSummary summary) { smallstep(nodeFrom, _, summary) } @@ -270,7 +278,7 @@ private predicate smallstepProj(Node nodeFrom, StepSummary summary) { * function. This means we will track the fact that `x.attr` can have the type of `y` into the * assignment to `z` inside `bar`, even though this attribute write happens _after_ `bar` is called. */ -private predicate flowsToStoreStep( +deprecated private predicate flowsToStoreStep( Node nodeFrom, TypeTrackingNode nodeTo, TypeTrackerContent content ) { exists(Node obj | nodeTo.flowsTo(obj) and basicStoreStep(nodeFrom, obj, content)) @@ -279,7 +287,7 @@ private predicate flowsToStoreStep( /** * Holds if `loadContent` is loaded from `nodeFrom` and written to `storeContent` of `nodeTo`. */ -private predicate flowsToLoadStoreStep( +deprecated private predicate flowsToLoadStoreStep( Node nodeFrom, TypeTrackingNode nodeTo, TypeTrackerContent loadContent, TypeTrackerContent storeContent ) { @@ -293,7 +301,7 @@ private predicate flowsToLoadStoreStep( * * A description of a step on an inter-procedural data flow path. */ -class StepSummary extends TStepSummary { +deprecated class StepSummary extends TStepSummary { /** Gets a textual representation of this step summary. */ string toString() { this instanceof LevelStep and result = "level" @@ -316,7 +324,7 @@ class StepSummary extends TStepSummary { } /** Provides predicates for updating step summaries (`StepSummary`s). */ -module StepSummary { +deprecated module StepSummary { predicate append = Cached::append/2; /** @@ -411,6 +419,8 @@ module StepSummary { } /** + * DEPRECATED: Use `semmle.python.dataflow.new.TypeTracking` instead. + * * A summary of the steps needed to track a value to a given dataflow node. * * This can be used to track objects that implement a certain API in order to @@ -437,7 +447,7 @@ module StepSummary { * `t = t2.step(myType(t2), result)`. If you additionally want to track individual * intra-procedural steps, use `t = t2.smallstep(myCallback(t2), result)`. */ -class TypeTracker extends TTypeTracker { +deprecated class TypeTracker extends TTypeTracker { Boolean hasCall; OptionalTypeTrackerContent content; @@ -565,7 +575,7 @@ class TypeTracker extends TTypeTracker { } /** Provides predicates for implementing custom `TypeTracker`s. */ -module TypeTracker { +deprecated module TypeTracker { /** * Gets a valid end point of type tracking. */ @@ -580,15 +590,17 @@ module TypeTracker { } pragma[nomagic] -private predicate backStepProj(TypeTrackingNode nodeTo, StepSummary summary) { +deprecated private predicate backStepProj(TypeTrackingNode nodeTo, StepSummary summary) { step(_, nodeTo, summary) } -private predicate backSmallstepProj(TypeTrackingNode nodeTo, StepSummary summary) { +deprecated private predicate backSmallstepProj(TypeTrackingNode nodeTo, StepSummary summary) { smallstep(_, nodeTo, summary) } /** + * DEPRECATED: Use `semmle.python.dataflow.new.TypeTracking` instead. + * * A summary of the steps needed to back-track a use of a value to a given dataflow node. * * This can for example be used to track callbacks that are passed to a certain API, @@ -618,7 +630,7 @@ private predicate backSmallstepProj(TypeTrackingNode nodeTo, StepSummary summary * `t2 = t.step(result, myCallback(t2))`. If you additionally want to track individual * intra-procedural steps, use `t2 = t.smallstep(result, myCallback(t2))`. */ -class TypeBackTracker extends TTypeBackTracker { +deprecated class TypeBackTracker extends TTypeBackTracker { Boolean hasReturn; OptionalTypeTrackerContent content; @@ -747,7 +759,7 @@ class TypeBackTracker extends TTypeBackTracker { } /** Provides predicates for implementing custom `TypeBackTracker`s. */ -module TypeBackTracker { +deprecated module TypeBackTracker { /** * Gets a valid end point of type back-tracking. */ @@ -768,14 +780,14 @@ module TypeBackTracker { * `stepCall` relation (`stepNoCall` not being recursive, can be join-ordered in the * same way as in `stepInlineLate`). */ -module CallGraphConstruction { +deprecated module CallGraphConstruction { /** The input to call graph construction. */ signature module InputSig { /** A state to track during type tracking. */ class State; /** Holds if type tracking should start at `start` in state `state`. */ - predicate start(Node start, State state); + deprecated predicate start(Node start, State state); /** * Holds if type tracking should use the step from `nodeFrom` to `nodeTo`, @@ -784,7 +796,7 @@ module CallGraphConstruction { * Implementing this predicate using `StepSummary::[small]stepNoCall` yields * standard type tracking. */ - predicate stepNoCall(Node nodeFrom, Node nodeTo, StepSummary summary); + deprecated predicate stepNoCall(Node nodeFrom, Node nodeTo, StepSummary summary); /** * Holds if type tracking should use the step from `nodeFrom` to `nodeTo`, @@ -793,7 +805,7 @@ module CallGraphConstruction { * Implementing this predicate using `StepSummary::[small]stepCall` yields * standard type tracking. */ - predicate stepCall(Node nodeFrom, Node nodeTo, StepSummary summary); + deprecated predicate stepCall(Node nodeFrom, Node nodeTo, StepSummary summary); /** A projection of an element from the state space. */ class StateProj; @@ -802,25 +814,25 @@ module CallGraphConstruction { StateProj stateProj(State state); /** Holds if type tracking should stop at `n` when we are tracking projected state `stateProj`. */ - predicate filter(Node n, StateProj stateProj); + deprecated predicate filter(Node n, StateProj stateProj); } /** Provides the `track` predicate for use in call graph construction. */ module Make { pragma[nomagic] - private predicate stepNoCallProj(Node nodeFrom, StepSummary summary) { + deprecated private predicate stepNoCallProj(Node nodeFrom, StepSummary summary) { Input::stepNoCall(nodeFrom, _, summary) } pragma[nomagic] - private predicate stepCallProj(Node nodeFrom, StepSummary summary) { + deprecated private predicate stepCallProj(Node nodeFrom, StepSummary summary) { Input::stepCall(nodeFrom, _, summary) } bindingset[nodeFrom, t] pragma[inline_late] pragma[noopt] - private TypeTracker stepNoCallInlineLate( + deprecated private TypeTracker stepNoCallInlineLate( TypeTracker t, TypeTrackingNode nodeFrom, TypeTrackingNode nodeTo ) { exists(StepSummary summary | @@ -837,7 +849,7 @@ module CallGraphConstruction { } pragma[nomagic] - private Node track(Input::State state, TypeTracker t) { + deprecated private Node track(Input::State state, TypeTracker t) { t.start() and Input::start(result, state) or exists(Input::StateProj stateProj | @@ -855,12 +867,12 @@ module CallGraphConstruction { bindingset[t, summary] pragma[inline_late] - private TypeTracker appendInlineLate(TypeTracker t, StepSummary summary) { + deprecated private TypeTracker appendInlineLate(TypeTracker t, StepSummary summary) { result = t.append(summary) } pragma[nomagic] - private Node trackCall(Input::State state, TypeTracker t, StepSummary summary) { + deprecated private Node trackCall(Input::State state, TypeTracker t, StepSummary summary) { exists(TypeTracker t2 | // non-linear recursion result = track(state, t2) and @@ -871,7 +883,7 @@ module CallGraphConstruction { /** Gets a node that can be reached from _some_ start node in state `state`. */ pragma[nomagic] - Node track(Input::State state) { result = track(state, TypeTracker::end()) } + deprecated Node track(Input::State state) { result = track(state, TypeTracker::end()) } } /** A simple version of `CallGraphConstruction` that uses standard type tracking. */ @@ -882,15 +894,15 @@ module CallGraphConstruction { class State; /** Holds if type tracking should start at `start` in state `state`. */ - predicate start(Node start, State state); + deprecated predicate start(Node start, State state); /** Holds if type tracking should stop at `n`. */ - predicate filter(Node n); + deprecated predicate filter(Node n); } /** Provides the `track` predicate for use in call graph construction. */ module Make { - private module I implements CallGraphConstruction::InputSig { + deprecated private module I implements CallGraphConstruction::InputSig { private import codeql.util.Unit class State = Input::State; @@ -915,7 +927,7 @@ module CallGraphConstruction { } } - import CallGraphConstruction::Make + deprecated import CallGraphConstruction::Make } } } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll index 5fe6dc154a8..c31cfeb5331 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll @@ -4,87 +4,54 @@ private import python private import semmle.python.dataflow.new.internal.DataFlowPublic as DataFlowPublic -private import semmle.python.dataflow.new.internal.DataFlowPrivate as DataFlowPrivate -import semmle.python.internal.CachedStages +private import TypeTrackingImpl as TypeTrackingImpl -class Node = DataFlowPublic::Node; +deprecated class Node = DataFlowPublic::Node; -class TypeTrackingNode = DataFlowPublic::TypeTrackingNode; +deprecated class TypeTrackingNode = DataFlowPublic::TypeTrackingNode; /** A content name for use by type trackers, or the empty string. */ -class OptionalTypeTrackerContent extends string { +deprecated class OptionalTypeTrackerContent extends string { OptionalTypeTrackerContent() { this = "" or - this = getPossibleContentName() + this instanceof TypeTrackingImpl::TypeTrackingInput::Content } } /** A content name for use by type trackers. */ -class TypeTrackerContent extends OptionalTypeTrackerContent { +deprecated class TypeTrackerContent extends OptionalTypeTrackerContent { TypeTrackerContent() { this != "" } } /** Gets the content string representing no value. */ -OptionalTypeTrackerContent noContent() { result = "" } +deprecated OptionalTypeTrackerContent noContent() { result = "" } /** * A label to use for `WithContent` and `WithoutContent` steps, restricting * which `ContentSet` may pass through. Not currently used in Python. */ -class ContentFilter extends Unit { +deprecated class ContentFilter extends Unit { TypeTrackerContent getAMatchingContent() { none() } } pragma[inline] -predicate compatibleContents(TypeTrackerContent storeContent, TypeTrackerContent loadContent) { +deprecated predicate compatibleContents( + TypeTrackerContent storeContent, TypeTrackerContent loadContent +) { storeContent = loadContent } -predicate simpleLocalFlowStep = DataFlowPrivate::simpleLocalFlowStepForTypetracking/2; +deprecated predicate simpleLocalFlowStep = + TypeTrackingImpl::TypeTrackingInput::simpleLocalSmallStep/2; -predicate jumpStep(Node nodeFrom, Node nodeTo) { - DataFlowPrivate::jumpStepSharedWithTypeTracker(nodeFrom, nodeTo) - or - capturedJumpStep(nodeFrom, nodeTo) -} - -predicate capturedJumpStep(Node nodeFrom, Node nodeTo) { - // Jump into a capturing scope. - // - // var = expr - // ... - // def f(): - // ..var is used.. - // - // nodeFrom is `expr` - // nodeTo is entry node for `f` - exists(ScopeEntryDefinition e, SsaSourceVariable var, DefinitionNode def | - e.getSourceVariable() = var and - var.hasDefiningNode(def) - | - nodeTo.asCfgNode() = e.getDefiningNode() and - nodeFrom.asCfgNode() = def.getValue() and - var.getScope().getScope*() = nodeFrom.getScope() - ) -} +deprecated predicate jumpStep = TypeTrackingImpl::TypeTrackingInput::jumpStep/2; /** Holds if there is a level step from `nodeFrom` to `nodeTo`, which may depend on the call graph. */ -predicate levelStepCall(Node nodeFrom, Node nodeTo) { none() } +deprecated predicate levelStepCall(Node nodeFrom, Node nodeTo) { none() } /** Holds if there is a level step from `nodeFrom` to `nodeTo`, which does not depend on the call graph. */ -predicate levelStepNoCall(Node nodeFrom, Node nodeTo) { - TypeTrackerSummaryFlow::levelStepNoCall(nodeFrom, nodeTo) -} - -/** - * Gets the name of a possible piece of content. For Python, this is currently only attribute names, - * using the name of the attribute for the corresponding content. - */ -string getPossibleContentName() { - Stages::TypeTracking::ref() and // the TypeTracking::append() etc. predicates that we want to cache depend on this predicate, so we can place the `ref()` call here to get around identical files. - result = any(DataFlowPublic::AttrRef a).getAttributeName() -} +deprecated predicate levelStepNoCall = TypeTrackingImpl::TypeTrackingInput::levelStepNoCall/2; /** * Holds if `nodeFrom` steps to `nodeTo` by being passed as a parameter in a call. @@ -93,177 +60,43 @@ string getPossibleContentName() { * recursion (or, at best, terrible performance), since identifying calls to library * methods is done using API graphs (which uses type tracking). */ -predicate callStep(DataFlowPublic::ArgumentNode nodeFrom, DataFlowPublic::ParameterNode nodeTo) { - exists( - DataFlowPrivate::DataFlowCall call, DataFlowPrivate::DataFlowCallable callable, - DataFlowPrivate::ArgumentPosition apos, DataFlowPrivate::ParameterPosition ppos - | - nodeFrom = call.getArgument(apos) and - nodeTo = callable.getParameter(ppos) and - DataFlowPrivate::parameterMatch(ppos, apos) and - callable = call.getCallable() - ) -} +deprecated predicate callStep = TypeTrackingImpl::TypeTrackingInput::callStep/2; /** Holds if `nodeFrom` steps to `nodeTo` by being returned from a call. */ -predicate returnStep(DataFlowPrivate::ReturnNode nodeFrom, Node nodeTo) { - exists(DataFlowPrivate::ExtractedDataFlowCall call | - nodeFrom.getEnclosingCallable() = call.getCallable() and - nodeTo.(DataFlowPublic::CfgNode).getNode() = call.getNode() - ) -} +deprecated predicate returnStep = TypeTrackingImpl::TypeTrackingInput::returnStep/2; /** * Holds if `nodeFrom` is being written to the `content` content of the object in `nodeTo`. */ -predicate basicStoreStep(Node nodeFrom, Node nodeTo, string content) { - exists(DataFlowPublic::AttrWrite a | - a.mayHaveAttributeName(content) and - nodeFrom = a.getValue() and - nodeTo = a.getObject() - ) - or - exists(DataFlowPublic::ContentSet contents | - contents.(DataFlowPublic::AttributeContent).getAttribute() = content - | - TypeTrackerSummaryFlow::basicStoreStep(nodeFrom, nodeTo, contents) - ) -} +deprecated predicate basicStoreStep = TypeTrackingImpl::TypeTrackingInput::storeStep/3; /** * Holds if `nodeTo` is the result of accessing the `content` content of `nodeFrom`. */ -predicate basicLoadStep(Node nodeFrom, Node nodeTo, string content) { - exists(DataFlowPublic::AttrRead a | - a.mayHaveAttributeName(content) and - nodeFrom = a.getObject() and - nodeTo = a - ) - or - exists(DataFlowPublic::ContentSet contents | - contents.(DataFlowPublic::AttributeContent).getAttribute() = content - | - TypeTrackerSummaryFlow::basicLoadStep(nodeFrom, nodeTo, contents) - ) -} +deprecated predicate basicLoadStep = TypeTrackingImpl::TypeTrackingInput::loadStep/3; /** * Holds if the `loadContent` of `nodeFrom` is stored in the `storeContent` of `nodeTo`. */ -predicate basicLoadStoreStep(Node nodeFrom, Node nodeTo, string loadContent, string storeContent) { - exists(DataFlowPublic::ContentSet loadContents, DataFlowPublic::ContentSet storeContents | - loadContents.(DataFlowPublic::AttributeContent).getAttribute() = loadContent and - storeContents.(DataFlowPublic::AttributeContent).getAttribute() = storeContent - | - TypeTrackerSummaryFlow::basicLoadStoreStep(nodeFrom, nodeTo, loadContents, storeContents) - ) -} +deprecated predicate basicLoadStoreStep = TypeTrackingImpl::TypeTrackingInput::loadStoreStep/4; /** * Holds if type-tracking should step from `nodeFrom` to `nodeTo` but block flow of contents matched by `filter` through here. */ -predicate basicWithoutContentStep(Node nodeFrom, Node nodeTo, ContentFilter filter) { none() } +deprecated predicate basicWithoutContentStep(Node nodeFrom, Node nodeTo, ContentFilter filter) { + none() +} /** * Holds if type-tracking should step from `nodeFrom` to `nodeTo` if inside a content matched by `filter`. */ -predicate basicWithContentStep(Node nodeFrom, Node nodeTo, ContentFilter filter) { none() } +deprecated predicate basicWithContentStep(Node nodeFrom, Node nodeTo, ContentFilter filter) { + none() +} /** * A utility class that is equivalent to `boolean` but does not require type joining. */ -class Boolean extends boolean { +deprecated class Boolean extends boolean { Boolean() { this = true or this = false } } - -private import SummaryTypeTracker as SummaryTypeTracker -private import semmle.python.dataflow.new.internal.FlowSummaryImpl as FlowSummaryImpl -private import semmle.python.dataflow.new.internal.DataFlowDispatch as DataFlowDispatch - -pragma[noinline] -private predicate argumentPositionMatch( - DataFlowPublic::CallCfgNode call, DataFlowPublic::Node arg, - DataFlowDispatch::ParameterPosition ppos -) { - exists(DataFlowDispatch::ArgumentPosition apos | - DataFlowDispatch::parameterMatch(ppos, apos) and - DataFlowDispatch::normalCallArg(call.getNode(), arg, apos) - ) -} - -private module SummaryTypeTrackerInput implements SummaryTypeTracker::Input { - // Dataflow nodes - class Node = DataFlowPublic::Node; - - // Content - class TypeTrackerContent = DataFlowPublic::ContentSet; - - class TypeTrackerContentFilter = ContentFilter; - - TypeTrackerContentFilter getFilterFromWithoutContentStep(TypeTrackerContent content) { none() } - - TypeTrackerContentFilter getFilterFromWithContentStep(TypeTrackerContent content) { none() } - - // Callables - class SummarizedCallable = FlowSummaryImpl::Private::SummarizedCallableImpl; - - // Summaries and their stacks - class SummaryComponent = FlowSummaryImpl::Private::SummaryComponent; - - class SummaryComponentStack = FlowSummaryImpl::Private::SummaryComponentStack; - - predicate singleton = FlowSummaryImpl::Private::SummaryComponentStack::singleton/1; - - predicate push = FlowSummaryImpl::Private::SummaryComponentStack::push/2; - - // Relating content to summaries - predicate content = FlowSummaryImpl::Private::SummaryComponent::content/1; - - SummaryComponent withoutContent(TypeTrackerContent contents) { none() } - - SummaryComponent withContent(TypeTrackerContent contents) { none() } - - predicate return = FlowSummaryImpl::Private::SummaryComponent::return/0; - - // Relating nodes to summaries - Node argumentOf(Node call, SummaryComponent arg, boolean isPostUpdate) { - exists(DataFlowDispatch::ParameterPosition pos | - arg = FlowSummaryImpl::Private::SummaryComponent::argument(pos) and - argumentPositionMatch(call, result, pos) and - isPostUpdate = [false, true] // todo: implement when/if Python uses post-update nodes in type tracking - ) - } - - Node parameterOf(Node callable, SummaryComponent param) { - exists( - DataFlowDispatch::ArgumentPosition apos, DataFlowDispatch::ParameterPosition ppos, Parameter p - | - param = FlowSummaryImpl::Private::SummaryComponent::parameter(apos) and - DataFlowDispatch::parameterMatch(ppos, apos) and - result.asCfgNode().getNode() = p and - ( - exists(int i | ppos.isPositional(i) | - p = callable.getALocalSource().asExpr().(CallableExpr).getInnerScope().getArg(i) - ) - or - exists(string name | ppos.isKeyword(name) | - p = callable.getALocalSource().asExpr().(CallableExpr).getInnerScope().getArgByName(name) - ) - ) - ) - } - - Node returnOf(Node callable, SummaryComponent return) { - return = FlowSummaryImpl::Private::SummaryComponent::return() and - // `result` should be the return value of a callable expression (lambda or function) referenced by `callable` - result.asCfgNode() = - callable.getALocalSource().asExpr().(CallableExpr).getInnerScope().getAReturnValueFlowNode() - } - - // Relating callables to nodes - Node callTo(SummarizedCallable callable) { - result = callable.(DataFlowDispatch::LibraryCallable).getACallSimple() - } -} - -private module TypeTrackerSummaryFlow = SummaryTypeTracker::SummaryFlow; diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll new file mode 100644 index 00000000000..1a9bdb5202e --- /dev/null +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll @@ -0,0 +1,274 @@ +import codeql.util.Unit +import codeql.typetracking.TypeTracking as Shared +import codeql.typetracking.internal.TypeTrackingImpl as SharedImpl +private import python +private import semmle.python.internal.CachedStages +private import semmle.python.dataflow.new.internal.DataFlowPublic as DataFlowPublic +private import semmle.python.dataflow.new.internal.DataFlowPrivate as DataFlowPrivate +private import codeql.typetracking.internal.SummaryTypeTracker as SummaryTypeTracker +private import semmle.python.dataflow.new.internal.FlowSummaryImpl as FlowSummaryImpl +private import semmle.python.dataflow.new.internal.DataFlowDispatch as DataFlowDispatch + +private module SummaryTypeTrackerInput implements SummaryTypeTracker::Input { + // Dataflow nodes + class Node = DataFlowPublic::Node; + + // Content + class Content = DataFlowPublic::ContentSet; + + class ContentFilter = TypeTrackingInput::ContentFilter; + + ContentFilter getFilterFromWithoutContentStep(Content content) { none() } + + ContentFilter getFilterFromWithContentStep(Content content) { none() } + + // Callables + class SummarizedCallable = FlowSummaryImpl::Private::SummarizedCallableImpl; + + // Summaries and their stacks + class SummaryComponent = FlowSummaryImpl::Private::SummaryComponent; + + class SummaryComponentStack = FlowSummaryImpl::Private::SummaryComponentStack; + + predicate singleton = FlowSummaryImpl::Private::SummaryComponentStack::singleton/1; + + predicate push = FlowSummaryImpl::Private::SummaryComponentStack::push/2; + + // Relating content to summaries + predicate content = FlowSummaryImpl::Private::SummaryComponent::content/1; + + SummaryComponent withoutContent(Content contents) { none() } + + SummaryComponent withContent(Content contents) { none() } + + predicate return = FlowSummaryImpl::Private::SummaryComponent::return/0; + + pragma[noinline] + private predicate argumentPositionMatch( + DataFlowPublic::CallCfgNode call, DataFlowPublic::Node arg, + DataFlowDispatch::ParameterPosition ppos + ) { + exists(DataFlowDispatch::ArgumentPosition apos | + DataFlowDispatch::parameterMatch(ppos, apos) and + DataFlowDispatch::normalCallArg(call.getNode(), arg, apos) + ) + } + + // Relating nodes to summaries + Node argumentOf(Node call, SummaryComponent arg, boolean isPostUpdate) { + exists(DataFlowDispatch::ParameterPosition pos | + arg = FlowSummaryImpl::Private::SummaryComponent::argument(pos) and + argumentPositionMatch(call, result, pos) and + isPostUpdate = [false, true] // todo: implement when/if Python uses post-update nodes in type tracking + ) + } + + Node parameterOf(Node callable, SummaryComponent param) { + exists( + DataFlowDispatch::ArgumentPosition apos, DataFlowDispatch::ParameterPosition ppos, Parameter p + | + param = FlowSummaryImpl::Private::SummaryComponent::parameter(apos) and + DataFlowDispatch::parameterMatch(ppos, apos) and + result.asCfgNode().getNode() = p and + ( + exists(int i | ppos.isPositional(i) | + p = callable.getALocalSource().asExpr().(CallableExpr).getInnerScope().getArg(i) + ) + or + exists(string name | ppos.isKeyword(name) | + p = callable.getALocalSource().asExpr().(CallableExpr).getInnerScope().getArgByName(name) + ) + ) + ) + } + + Node returnOf(Node callable, SummaryComponent return) { + return = FlowSummaryImpl::Private::SummaryComponent::return() and + // `result` should be the return value of a callable expression (lambda or function) referenced by `callable` + result.asCfgNode() = + callable.getALocalSource().asExpr().(CallableExpr).getInnerScope().getAReturnValueFlowNode() + } + + // Relating callables to nodes + Node callTo(SummarizedCallable callable) { + result = callable.(DataFlowDispatch::LibraryCallable).getACallSimple() + } +} + +private module TypeTrackerSummaryFlow = SummaryTypeTracker::SummaryFlow; + +/** + * Gets the name of a possible piece of content. For Python, this is currently only attribute names, + * using the name of the attribute for the corresponding content. + */ +private string getPossibleContentName() { + Stages::TypeTracking::ref() and // the TypeTracking::append() etc. predicates that we want to cache depend on this predicate, so we can place the `ref()` call here to get around identical files. + result = any(DataFlowPublic::AttrRef a).getAttributeName() +} + +module TypeTrackingInput implements Shared::TypeTrackingInput { + class Node = DataFlowPublic::Node; + + class LocalSourceNode = DataFlowPublic::LocalSourceNode; + + class Content instanceof string { + Content() { this = getPossibleContentName() } + + string toString() { result = this } + } + + /** + * A label to use for `WithContent` and `WithoutContent` steps, restricting + * which `ContentSet` may pass through. + */ + class ContentFilter extends Unit { + Content getAMatchingContent() { none() } + } + + /** + * Holds if a value stored with `storeContents` can be read back with `loadContents`. + */ + pragma[inline] + predicate compatibleContents(Content storeContents, Content loadContents) { + storeContents = loadContents + } + + /** Holds if there is a simple local flow step from `nodeFrom` to `nodeTo` */ + predicate simpleLocalSmallStep = DataFlowPrivate::simpleLocalFlowStepForTypetracking/2; + + /** Holds if there is a level step from `nodeFrom` to `nodeTo`, which may depend on the call graph. */ + predicate levelStepCall(Node nodeFrom, LocalSourceNode nodeTo) { none() } + + /** Holds if there is a level step from `nodeFrom` to `nodeTo`, which does not depend on the call graph. */ + predicate levelStepNoCall(Node nodeFrom, LocalSourceNode nodeTo) { + TypeTrackerSummaryFlow::levelStepNoCall(nodeFrom, nodeTo) + } + + /** + * Holds if `nodeFrom` steps to `nodeTo` by being passed as a parameter in a call. + * + * Flow into summarized library methods is not included, as that will lead to negative + * recursion (or, at best, terrible performance), since identifying calls to library + * methods is done using API graphs (which uses type tracking). + */ + predicate callStep(Node nodeFrom, LocalSourceNode nodeTo) { + exists( + DataFlowPrivate::DataFlowCall call, DataFlowPrivate::DataFlowCallable callable, + DataFlowPrivate::ArgumentPosition apos, DataFlowPrivate::ParameterPosition ppos + | + nodeFrom = call.getArgument(apos) and + nodeTo = callable.getParameter(ppos) and + DataFlowPrivate::parameterMatch(ppos, apos) and + callable = call.getCallable() + ) + } + + /** + * Holds if `nodeFrom` steps to `nodeTo` by being returned from a call. + * + * Flow out of summarized library methods is not included, as that will lead to negative + * recursion (or, at best, terrible performance), since identifying calls to library + * methods is done using API graphs (which uses type tracking). + */ + predicate returnStep(Node nodeFrom, LocalSourceNode nodeTo) { + exists(DataFlowPrivate::ExtractedDataFlowCall call | + nodeFrom.(DataFlowPrivate::ReturnNode).getEnclosingCallable() = call.getCallable() and + nodeTo.(DataFlowPublic::CfgNode).getNode() = call.getNode() + ) + } + + /** + * Holds if `nodeFrom` is being written to the `content` content of the object in `nodeTo`. + */ + predicate storeStep(Node nodeFrom, Node nodeTo, Content content) { + exists(DataFlowPublic::AttrWrite a | + a.mayHaveAttributeName(content) and + nodeFrom = a.getValue() and + nodeTo = a.getObject() + ) + or + exists(DataFlowPublic::ContentSet contents | + contents.(DataFlowPublic::AttributeContent).getAttribute() = content + | + TypeTrackerSummaryFlow::basicStoreStep(nodeFrom, nodeTo, contents) + ) + } + + /** + * Holds if `nodeTo` is the result of accessing the `content` content of `nodeFrom`. + */ + predicate loadStep(Node nodeFrom, LocalSourceNode nodeTo, Content content) { + exists(DataFlowPublic::AttrRead a | + a.mayHaveAttributeName(content) and + nodeFrom = a.getObject() and + nodeTo = a + ) + or + exists(DataFlowPublic::ContentSet contents | + contents.(DataFlowPublic::AttributeContent).getAttribute() = content + | + TypeTrackerSummaryFlow::basicLoadStep(nodeFrom, nodeTo, contents) + ) + } + + /** + * Holds if the `loadContent` of `nodeFrom` is stored in the `storeContent` of `nodeTo`. + */ + predicate loadStoreStep(Node nodeFrom, Node nodeTo, Content loadContent, Content storeContent) { + exists(DataFlowPublic::ContentSet loadContents, DataFlowPublic::ContentSet storeContents | + loadContents.(DataFlowPublic::AttributeContent).getAttribute() = loadContent and + storeContents.(DataFlowPublic::AttributeContent).getAttribute() = storeContent + | + TypeTrackerSummaryFlow::basicLoadStoreStep(nodeFrom, nodeTo, loadContents, storeContents) + ) + } + + /** + * Holds if type-tracking should step from `nodeFrom` to `nodeTo` if inside a content matched by `filter`. + */ + predicate withContentStep(Node nodeFrom, LocalSourceNode nodeTo, ContentFilter filter) { + TypeTrackerSummaryFlow::basicWithContentStep(nodeFrom, nodeTo, filter) + } + + /** + * Holds if type-tracking should step from `nodeFrom` to `nodeTo` but block flow of contents matched by `filter` through here. + */ + predicate withoutContentStep(Node nodeFrom, LocalSourceNode nodeTo, ContentFilter filter) { + TypeTrackerSummaryFlow::basicWithoutContentStep(nodeFrom, nodeTo, filter) + } + + private predicate capturedJumpStep(Node nodeFrom, Node nodeTo) { + // Jump into a capturing scope. + // + // var = expr + // ... + // def f(): + // ..var is used.. + // + // nodeFrom is `expr` + // nodeTo is entry node for `f` + exists(ScopeEntryDefinition e, SsaSourceVariable var, DefinitionNode def | + e.getSourceVariable() = var and + var.hasDefiningNode(def) + | + nodeTo.(DataFlowPublic::ScopeEntryDefinitionNode).getDefinition() = e and + nodeFrom.asCfgNode() = def.getValue() and + var.getScope().getScope*() = nodeFrom.getScope() + ) + } + + /** + * Holds if data can flow from `node1` to `node2` in a way that discards call contexts. + */ + predicate jumpStep(Node nodeFrom, LocalSourceNode nodeTo) { + DataFlowPrivate::jumpStepSharedWithTypeTracker(nodeFrom, nodeTo) + or + capturedJumpStep(nodeFrom, nodeTo) + } + + predicate hasFeatureBacktrackStoreTarget() { any() } + + predicate nonStandardFlowsTo(LocalSourceNode localSource, Node dst) { localSource.flowsTo(dst) } +} + +import SharedImpl::TypeTracking diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/VariableCapture.qll b/python/ql/lib/semmle/python/dataflow/new/internal/VariableCapture.qll new file mode 100644 index 00000000000..dd4d3f03867 --- /dev/null +++ b/python/ql/lib/semmle/python/dataflow/new/internal/VariableCapture.qll @@ -0,0 +1,207 @@ +/** Provides logic related to captured variables. */ + +private import python +private import DataFlowPublic +private import semmle.python.dataflow.new.internal.DataFlowPrivate +private import codeql.dataflow.VariableCapture as Shared + +// Note: The Javascript implementation (on the branch https://github.com/github/codeql/pull/14412) +// had some tweaks related to performance. See these two commits: +// - JS: Capture flow: https://github.com/github/codeql/pull/14412/commits/7bcf8b858babfea0a3e36ce61145954c249e13ac +// - JS: Disallow consecutive captured contents: https://github.com/github/codeql/pull/14412/commits/46e4cdc6232604ea7f58138a336d5a222fad8567 +// The first is the main implementation, the second is a performance motivated restriction. +// The restriction is to clear any `CapturedVariableContent` before writing a new one +// to avoid long access paths (see the link for a nice explanation). +private module CaptureInput implements Shared::InputSig { + private import python as PY + + additional class ExprCfgNode extends ControlFlowNode { + ExprCfgNode() { isExpressionNode(this) } + } + + class Callable extends Scope { + predicate isConstructor() { none() } + } + + class BasicBlock extends PY::BasicBlock { + Callable getEnclosingCallable() { result = this.getScope() } + + // Note `PY:BasicBlock` does not have a `getLocation`. + // (Instead it has a complicated location info logic.) + // Using the location of the first node is simple + // and we just need a way to identify the basic block + // during debugging, so this will be serviceable. + Location getLocation() { result = super.getNode(0).getLocation() } + } + + BasicBlock getImmediateBasicBlockDominator(BasicBlock bb) { result = bb.getImmediateDominator() } + + BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() } + + class CapturedVariable extends LocalVariable { + Function f; + + CapturedVariable() { + // note: captured variables originating on module scope is currently + // covered by global variable handling. + this.getScope() = f and + this.getAnAccess().getScope() != f + } + + Callable getCallable() { result = f } + + Location getLocation() { result = f.getLocation() } + + /** Gets a scope that captures this variable. */ + Scope getACapturingScope() { + result = this.getAnAccess().getScope().getScope*() and + result.getScope+() = f + } + } + + class CapturedParameter extends CapturedVariable { + CapturedParameter() { this.isParameter() } + + ControlFlowNode getCfgNode() { result.getNode().(Parameter) = this.getAnAccess() } + } + + class Expr extends ExprCfgNode { + predicate hasCfgNode(BasicBlock bb, int i) { this = bb.getNode(i) } + } + + class VariableWrite extends ControlFlowNode { + CapturedVariable v; + + VariableWrite() { this = v.getAStore().getAFlowNode().(DefinitionNode).getValue() } + + CapturedVariable getVariable() { result = v } + + predicate hasCfgNode(BasicBlock bb, int i) { this = bb.getNode(i) } + } + + class VariableRead extends Expr { + CapturedVariable v; + + VariableRead() { this = v.getALoad().getAFlowNode() } + + CapturedVariable getVariable() { result = v } + } + + private predicate closureFlowStep(ExprCfgNode nodeFrom, ExprCfgNode nodeTo) { + // TODO: Other languages have an extra case here looking like + // simpleAstFlowStep(nodeFrom, nodeTo) + // we should investigate the potential benefit of adding that. + exists(SsaVariable def | + def.getAUse() = nodeTo and + def.getAnUltimateDefinition().getDefinition().(DefinitionNode).getValue() = nodeFrom + ) + } + + class ClosureExpr extends Expr { + ClosureExpr() { + this.getNode() instanceof CallableExpr + or + this.getNode() instanceof Comp + } + + predicate hasBody(Callable body) { + body = this.getNode().(CallableExpr).getInnerScope() + or + body = this.getNode().(Comp).getFunction() + } + + predicate hasAliasedAccess(Expr f) { closureFlowStep+(this, f) and not closureFlowStep(f, _) } + } +} + +class CapturedVariable = CaptureInput::CapturedVariable; + +class ClosureExpr = CaptureInput::ClosureExpr; + +module Flow = Shared::Flow; + +private Flow::ClosureNode asClosureNode(Node n) { + result = n.(SynthCaptureNode).getSynthesizedCaptureNode() + or + result.(Flow::ExprNode).getExpr() = n.(CfgNode).getNode() + or + result.(Flow::VariableWriteSourceNode).getVariableWrite() = n.(CfgNode).getNode() + or + result.(Flow::ExprPostUpdateNode).getExpr() = + n.(PostUpdateNode).getPreUpdateNode().(CfgNode).getNode() + or + result.(Flow::ParameterNode).getParameter().getCfgNode() = n.(CfgNode).getNode() + or + result.(Flow::ThisParameterNode).getCallable() = + n.(SynthCapturedVariablesParameterNode).getCallable() +} + +predicate storeStep(Node nodeFrom, CapturedVariableContent c, Node nodeTo) { + Flow::storeStep(asClosureNode(nodeFrom), c.getVariable(), asClosureNode(nodeTo)) +} + +predicate readStep(Node nodeFrom, CapturedVariableContent c, Node nodeTo) { + Flow::readStep(asClosureNode(nodeFrom), c.getVariable(), asClosureNode(nodeTo)) +} + +predicate valueStep(Node nodeFrom, Node nodeTo) { + Flow::localFlowStep(asClosureNode(nodeFrom), asClosureNode(nodeTo)) +} + +/** + * Provides predicates to understand the behavior of the variable capture + * library instantiation on Python code bases. + * + * The predicates in here are meant to be run by quick-eval on databases of + * interest. The `unmapped*`-predicates should ideally be empty. + */ +private module Debug { + predicate flowStoreStep( + Node nodeFrom, Flow::ClosureNode closureNodeFrom, CapturedVariable v, + Flow::ClosureNode closureNodeTo, Node nodeTo + ) { + closureNodeFrom = asClosureNode(nodeFrom) and + closureNodeTo = asClosureNode(nodeTo) and + Flow::storeStep(closureNodeFrom, v, closureNodeTo) + } + + predicate unmappedFlowStoreStep( + Flow::ClosureNode closureNodeFrom, CapturedVariable v, Flow::ClosureNode closureNodeTo + ) { + Flow::storeStep(closureNodeFrom, v, closureNodeTo) and + not flowStoreStep(_, closureNodeFrom, v, closureNodeTo, _) + } + + predicate flowReadStep( + Node nodeFrom, Flow::ClosureNode closureNodeFrom, CapturedVariable v, + Flow::ClosureNode closureNodeTo, Node nodeTo + ) { + closureNodeFrom = asClosureNode(nodeFrom) and + closureNodeTo = asClosureNode(nodeTo) and + Flow::readStep(closureNodeFrom, v, closureNodeTo) + } + + predicate unmappedFlowReadStep( + Flow::ClosureNode closureNodeFrom, CapturedVariable v, Flow::ClosureNode closureNodeTo + ) { + Flow::readStep(closureNodeFrom, v, closureNodeTo) and + not flowReadStep(_, closureNodeFrom, v, closureNodeTo, _) + } + + predicate flowValueStep( + Node nodeFrom, Flow::ClosureNode closureNodeFrom, Flow::ClosureNode closureNodeTo, Node nodeTo + ) { + closureNodeFrom = asClosureNode(nodeFrom) and + closureNodeTo = asClosureNode(nodeTo) and + Flow::localFlowStep(closureNodeFrom, closureNodeTo) + } + + predicate unmappedFlowValueStep(Flow::ClosureNode closureNodeFrom, Flow::ClosureNode closureNodeTo) { + Flow::localFlowStep(closureNodeFrom, closureNodeTo) and + not flowValueStep(_, closureNodeFrom, closureNodeTo, _) + } + + predicate unmappedFlowClosureNode(Flow::ClosureNode closureNode) { + not closureNode = asClosureNode(_) + } +} diff --git a/python/ql/lib/semmle/python/internal/CachedStages.qll b/python/ql/lib/semmle/python/internal/CachedStages.qll index 40dda556caa..da32b4c071e 100644 --- a/python/ql/lib/semmle/python/internal/CachedStages.qll +++ b/python/ql/lib/semmle/python/internal/CachedStages.qll @@ -111,6 +111,7 @@ module Stages { predicate ref() { 1 = 1 } private import semmle.python.dataflow.new.DataFlow::DataFlow as NewDataFlow + private import semmle.python.dataflow.new.internal.TypeTrackingImpl as TypeTrackingImpl private import semmle.python.ApiGraphs::API as API /** @@ -121,7 +122,7 @@ module Stages { predicate backref() { 1 = 1 or - exists(any(NewDataFlow::TypeTracker t).append(_)) + exists(TypeTrackingImpl::append(_, _)) or exists(any(API::Node n).getAMember().getAValueReachableFromSource()) } diff --git a/python/ql/lib/semmle/python/security/dataflow/UnsafeShellCommandConstructionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/UnsafeShellCommandConstructionCustomizations.qll index a39ffc27e87..6d245f472de 100644 --- a/python/ql/lib/semmle/python/security/dataflow/UnsafeShellCommandConstructionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/UnsafeShellCommandConstructionCustomizations.qll @@ -50,7 +50,7 @@ module UnsafeShellCommandConstruction { source = backtrackShellExec(TypeTracker::TypeBackTracker::end(), shellExec) } - import semmle.python.dataflow.new.TypeTracker as TypeTracker + import semmle.python.dataflow.new.TypeTracking as TypeTracker private DataFlow::LocalSourceNode backtrackShellExec( TypeTracker::TypeBackTracker t, Concepts::SystemCommandExecution shellExec diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 5006a5b874f..175f47861b9 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.5 + +No user-facing changes. + ## 0.9.4 No user-facing changes. diff --git a/python/ql/src/change-notes/released/0.9.5.md b/python/ql/src/change-notes/released/0.9.5.md new file mode 100644 index 00000000000..f53e894fac2 --- /dev/null +++ b/python/ql/src/change-notes/released/0.9.5.md @@ -0,0 +1,3 @@ +## 0.9.5 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 694907ca221..460240feaff 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.4 +lastReleaseVersion: 0.9.5 diff --git a/python/ql/src/meta/analysis-quality/TTCallGraph.ql b/python/ql/src/meta/analysis-quality/TTCallGraph.ql index d6383a32eb1..bdd63495191 100644 --- a/python/ql/src/meta/analysis-quality/TTCallGraph.ql +++ b/python/ql/src/meta/analysis-quality/TTCallGraph.ql @@ -3,7 +3,6 @@ * @kind problem * @problem.severity recommendation * @id py/meta/type-tracking-call-graph - * @tags meta * @precision very-low */ diff --git a/python/ql/src/meta/analysis-quality/TTCallGraphMissing.ql b/python/ql/src/meta/analysis-quality/TTCallGraphMissing.ql index bbf5b3553ef..bb28c5bf804 100644 --- a/python/ql/src/meta/analysis-quality/TTCallGraphMissing.ql +++ b/python/ql/src/meta/analysis-quality/TTCallGraphMissing.ql @@ -3,7 +3,6 @@ * @kind problem * @problem.severity recommendation * @id py/meta/call-graph-missing - * @tags meta * @precision very-low */ diff --git a/python/ql/src/meta/analysis-quality/TTCallGraphNew.ql b/python/ql/src/meta/analysis-quality/TTCallGraphNew.ql index 82a830265c6..b9f1df54b3b 100644 --- a/python/ql/src/meta/analysis-quality/TTCallGraphNew.ql +++ b/python/ql/src/meta/analysis-quality/TTCallGraphNew.ql @@ -3,7 +3,6 @@ * @kind problem * @problem.severity recommendation * @id py/meta/call-graph-new - * @tags meta * @precision very-low */ diff --git a/python/ql/src/meta/analysis-quality/TTCallGraphNewAmbiguous.ql b/python/ql/src/meta/analysis-quality/TTCallGraphNewAmbiguous.ql index dc27dcf262c..702541ca16d 100644 --- a/python/ql/src/meta/analysis-quality/TTCallGraphNewAmbiguous.ql +++ b/python/ql/src/meta/analysis-quality/TTCallGraphNewAmbiguous.ql @@ -3,7 +3,6 @@ * @kind problem * @problem.severity recommendation * @id py/meta/call-graph-new-ambiguous - * @tags meta * @precision very-low */ diff --git a/python/ql/src/meta/analysis-quality/TTCallGraphShared.ql b/python/ql/src/meta/analysis-quality/TTCallGraphShared.ql index 7a3bd794839..d44d1ac497f 100644 --- a/python/ql/src/meta/analysis-quality/TTCallGraphShared.ql +++ b/python/ql/src/meta/analysis-quality/TTCallGraphShared.ql @@ -3,7 +3,6 @@ * @kind problem * @problem.severity recommendation * @id py/meta/call-graph-shared - * @tags meta * @precision very-low */ diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 760131f4a63..25594b06637 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.5-dev +version: 0.9.6-dev groups: - python - queries diff --git a/python/ql/test/experimental/dataflow/coverage/localFlow.expected b/python/ql/test/experimental/dataflow/coverage/localFlow.expected index 9712b9939f0..1cb2cab49fa 100644 --- a/python/ql/test/experimental/dataflow/coverage/localFlow.expected +++ b/python/ql/test/experimental/dataflow/coverage/localFlow.expected @@ -1,12 +1,12 @@ -| test.py:41:1:41:33 | Entry node for Function test_tuple_with_local_flow | test.py:42:10:42:18 | ControlFlowNode for NONSOURCE | -| test.py:41:1:41:33 | Entry node for Function test_tuple_with_local_flow | test.py:42:21:42:26 | ControlFlowNode for SOURCE | -| test.py:41:1:41:33 | Entry node for Function test_tuple_with_local_flow | test.py:44:5:44:8 | ControlFlowNode for SINK | +| test.py:41:1:41:33 | Entry definition for SsaSourceVariable NONSOURCE | test.py:42:10:42:18 | ControlFlowNode for NONSOURCE | +| test.py:41:1:41:33 | Entry definition for SsaSourceVariable SINK | test.py:44:5:44:8 | ControlFlowNode for SINK | +| test.py:41:1:41:33 | Entry definition for SsaSourceVariable SOURCE | test.py:42:21:42:26 | ControlFlowNode for SOURCE | | test.py:42:5:42:5 | ControlFlowNode for x | test.py:43:9:43:9 | ControlFlowNode for x | | test.py:42:10:42:26 | ControlFlowNode for Tuple | test.py:42:5:42:5 | ControlFlowNode for x | | test.py:43:5:43:5 | ControlFlowNode for y | test.py:44:10:44:10 | ControlFlowNode for y | | test.py:43:9:43:12 | ControlFlowNode for Subscript | test.py:43:5:43:5 | ControlFlowNode for y | -| test.py:208:1:208:53 | Entry node for Function test_nested_comprehension_deep_with_local_flow | test.py:209:25:209:30 | ControlFlowNode for SOURCE | -| test.py:208:1:208:53 | Entry node for Function test_nested_comprehension_deep_with_local_flow | test.py:210:5:210:8 | ControlFlowNode for SINK | +| test.py:208:1:208:53 | Entry definition for SsaSourceVariable SINK | test.py:210:5:210:8 | ControlFlowNode for SINK | +| test.py:208:1:208:53 | Entry definition for SsaSourceVariable SOURCE | test.py:209:25:209:30 | ControlFlowNode for SOURCE | | test.py:209:5:209:5 | ControlFlowNode for x | test.py:210:10:210:10 | ControlFlowNode for x | | test.py:209:9:209:68 | ControlFlowNode for .0 | test.py:209:9:209:68 | ControlFlowNode for .0 | | test.py:209:9:209:68 | ControlFlowNode for ListComp | test.py:209:5:209:5 | ControlFlowNode for x | diff --git a/python/ql/test/experimental/dataflow/enclosing-callable/EnclosingCallable.expected b/python/ql/test/experimental/dataflow/enclosing-callable/EnclosingCallable.expected index a2f7e02fd4e..3bd4cd81d54 100644 --- a/python/ql/test/experimental/dataflow/enclosing-callable/EnclosingCallable.expected +++ b/python/ql/test/experimental/dataflow/enclosing-callable/EnclosingCallable.expected @@ -18,7 +18,6 @@ | generator.py:1:1:1:23 | Function generator_func | generator.py:2:12:2:26 | ControlFlowNode for .0 | | generator.py:1:1:1:23 | Function generator_func | generator.py:2:12:2:26 | ControlFlowNode for .0 | | generator.py:1:1:1:23 | Function generator_func | generator.py:2:12:2:26 | ControlFlowNode for ListComp | -| generator.py:1:1:1:23 | Function generator_func | generator.py:2:12:2:26 | Entry node for Function listcomp | | generator.py:1:1:1:23 | Function generator_func | generator.py:2:13:2:13 | ControlFlowNode for Yield | | generator.py:1:1:1:23 | Function generator_func | generator.py:2:13:2:13 | ControlFlowNode for x | | generator.py:1:1:1:23 | Function generator_func | generator.py:2:19:2:19 | ControlFlowNode for x | diff --git a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll index acd9c2136c7..b2e29e9999e 100644 --- a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll +++ b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll @@ -8,7 +8,7 @@ private import semmle.python.ApiGraphs * `getACall` predicate on `SummarizedCallable`. */ module RecursionGuard { - private import semmle.python.dataflow.new.internal.TypeTrackerSpecific as TT + private import semmle.python.dataflow.new.internal.TypeTrackingImpl::TypeTrackingInput as TT private class RecursionGuard extends SummarizedCallable { RecursionGuard() { this = "RecursionGuard" } diff --git a/python/ql/test/experimental/dataflow/typetracking-summaries/TestSummaries.qll b/python/ql/test/experimental/dataflow/typetracking-summaries/TestSummaries.qll index fa98b6f84a0..47e0fda7c0b 100644 --- a/python/ql/test/experimental/dataflow/typetracking-summaries/TestSummaries.qll +++ b/python/ql/test/experimental/dataflow/typetracking-summaries/TestSummaries.qll @@ -8,7 +8,7 @@ private import semmle.python.ApiGraphs * `getACall` predicate on `SummarizedCallable`. */ module RecursionGuard { - private import semmle.python.dataflow.new.internal.TypeTrackerSpecific as TT + private import semmle.python.dataflow.new.internal.TypeTrackingImpl::TypeTrackingInput as TT private class RecursionGuard extends SummarizedCallable { RecursionGuard() { this = "TypeTrackingSummariesRecursionGuard" } diff --git a/python/ql/test/experimental/dataflow/typetracking-summaries/tracked.ql b/python/ql/test/experimental/dataflow/typetracking-summaries/tracked.ql index 6ce1afa8d60..b4b626ff97e 100644 --- a/python/ql/test/experimental/dataflow/typetracking-summaries/tracked.ql +++ b/python/ql/test/experimental/dataflow/typetracking-summaries/tracked.ql @@ -1,6 +1,6 @@ import python import semmle.python.dataflow.new.DataFlow -import semmle.python.dataflow.new.TypeTracker +import semmle.python.dataflow.new.TypeTracking import TestUtilities.InlineExpectationsTest import semmle.python.ApiGraphs import TestSummaries diff --git a/python/ql/test/experimental/dataflow/typetracking/moduleattr.expected b/python/ql/test/experimental/dataflow/typetracking/moduleattr.expected index baa29e053ce..ff9673aaaea 100644 --- a/python/ql/test/experimental/dataflow/typetracking/moduleattr.expected +++ b/python/ql/test/experimental/dataflow/typetracking/moduleattr.expected @@ -6,6 +6,6 @@ module_attr_tracker | import_as_attr.py:1:28:1:35 | ControlFlowNode for attr_ref | | import_as_attr.py:3:1:3:1 | ControlFlowNode for x | | import_as_attr.py:3:5:3:12 | ControlFlowNode for attr_ref | -| import_as_attr.py:5:1:5:10 | Entry node for Function fun | +| import_as_attr.py:5:1:5:10 | Entry definition for SsaSourceVariable attr_ref | | import_as_attr.py:6:5:6:5 | ControlFlowNode for y | | import_as_attr.py:6:9:6:16 | ControlFlowNode for attr_ref | diff --git a/python/ql/test/experimental/dataflow/typetracking/moduleattr.ql b/python/ql/test/experimental/dataflow/typetracking/moduleattr.ql index 74f5f259319..5c8414f40fa 100644 --- a/python/ql/test/experimental/dataflow/typetracking/moduleattr.ql +++ b/python/ql/test/experimental/dataflow/typetracking/moduleattr.ql @@ -1,6 +1,6 @@ import python import semmle.python.dataflow.new.DataFlow -import semmle.python.dataflow.new.TypeTracker +import semmle.python.dataflow.new.TypeTracking import semmle.python.ApiGraphs private DataFlow::TypeTrackingNode module_tracker(TypeTracker t) { diff --git a/python/ql/test/experimental/dataflow/typetracking/tracked.ql b/python/ql/test/experimental/dataflow/typetracking/tracked.ql index d6adbf5d7ab..ca893688256 100644 --- a/python/ql/test/experimental/dataflow/typetracking/tracked.ql +++ b/python/ql/test/experimental/dataflow/typetracking/tracked.ql @@ -1,8 +1,9 @@ import python import semmle.python.dataflow.new.DataFlow -import semmle.python.dataflow.new.TypeTracker +import semmle.python.dataflow.new.TypeTracking import TestUtilities.InlineExpectationsTest import semmle.python.ApiGraphs +private import semmle.python.dataflow.new.internal.DataFlowPrivate as DP // ----------------------------------------------------------------------------- // tracked @@ -26,7 +27,9 @@ module TrackedTest implements TestSig { not e.getLocation().getStartLine() = 0 and // We do not wish to annotate scope entry definitions, // as they do not appear in the source code. - not e.asCfgNode() = any(ScopeEntryDefinition def).getDefiningNode() and + not e instanceof DataFlow::ScopeEntryDefinitionNode and + // ...same for `SynthCaptureNode`s + not e instanceof DP::SynthCaptureNode and tag = "tracked" and location = e.getLocation() and value = t.getAttr() and diff --git a/python/ql/test/experimental/dataflow/validTest.py b/python/ql/test/experimental/dataflow/validTest.py index 5e12e7cccc7..76bd7bb52a5 100644 --- a/python/ql/test/experimental/dataflow/validTest.py +++ b/python/ql/test/experimental/dataflow/validTest.py @@ -74,6 +74,8 @@ if __name__ == "__main__": check_tests_valid("variable-capture.dict") check_tests_valid("variable-capture.test_collections") check_tests_valid("variable-capture.by_value") + check_tests_valid("variable-capture.test_library_calls") + check_tests_valid("variable-capture.test_fields") check_tests_valid("module-initialization.multiphase") check_tests_valid("fieldflow.test") check_tests_valid("fieldflow.test_dict") diff --git a/python/ql/test/experimental/dataflow/variable-capture/by_value.py b/python/ql/test/experimental/dataflow/variable-capture/by_value.py index f43b1c6b120..fa7546b8f2b 100644 --- a/python/ql/test/experimental/dataflow/variable-capture/by_value.py +++ b/python/ql/test/experimental/dataflow/variable-capture/by_value.py @@ -34,14 +34,14 @@ def by_value1(): a = SOURCE def inner(a_val=a): SINK(a_val) #$ captured - SINK_F(a) + SINK_F(a) #$ SPURIOUS: captured a = NONSOURCE inner() def by_value2(): a = NONSOURCE def inner(a_val=a): - SINK(a) #$ MISSING:captured + SINK(a) #$ captured SINK_F(a_val) a = SOURCE inner() diff --git a/python/ql/test/experimental/dataflow/variable-capture/dataflow-capture-consistency.expected b/python/ql/test/experimental/dataflow/variable-capture/dataflow-capture-consistency.expected new file mode 100644 index 00000000000..35f4edcf1fb --- /dev/null +++ b/python/ql/test/experimental/dataflow/variable-capture/dataflow-capture-consistency.expected @@ -0,0 +1,17 @@ +uniqueToString +uniqueEnclosingCallable +uniqueDominator +localDominator +localSuccessor +uniqueDefiningScope +variableIsCaptured +uniqueLocation +uniqueCfgNode +uniqueWriteTarget +uniqueWriteCfgNode +uniqueReadVariable +closureMustHaveBody +closureAliasMustBeInSameScope +variableAccessAstNesting +uniqueCallableLocation +consistencyOverview diff --git a/python/ql/test/experimental/dataflow/variable-capture/dataflow-capture-consistency.ql b/python/ql/test/experimental/dataflow/variable-capture/dataflow-capture-consistency.ql new file mode 100644 index 00000000000..653d00b7039 --- /dev/null +++ b/python/ql/test/experimental/dataflow/variable-capture/dataflow-capture-consistency.ql @@ -0,0 +1,2 @@ +import python +import semmle.python.dataflow.new.internal.DataFlowPrivate::VariableCapture::Flow::ConsistencyChecks diff --git a/python/ql/test/experimental/dataflow/variable-capture/dict.py b/python/ql/test/experimental/dataflow/variable-capture/dict.py index 3cfdfea7a1c..8a8165d6674 100644 --- a/python/ql/test/experimental/dataflow/variable-capture/dict.py +++ b/python/ql/test/experimental/dataflow/variable-capture/dict.py @@ -37,7 +37,7 @@ def out(): def captureOut1(): sinkO1["x"] = SOURCE captureOut1() - SINK(sinkO1["x"]) #$ MISSING:captured + SINK(sinkO1["x"]) #$ captured sinkO2 = { "x": "" } def captureOut2(): @@ -45,7 +45,7 @@ def out(): sinkO2["x"] = SOURCE m() captureOut2() - SINK(sinkO2["x"]) #$ MISSING:captured + SINK(sinkO2["x"]) #$ captured nonSink0 = { "x": "" } def captureOut1NotCalled(): @@ -67,7 +67,7 @@ def through(tainted): def captureOut1(): sinkO1["x"] = tainted captureOut1() - SINK(sinkO1["x"]) #$ MISSING:captured + SINK(sinkO1["x"]) #$ captured sinkO2 = { "x": "" } def captureOut2(): @@ -75,7 +75,7 @@ def through(tainted): sinkO2["x"] = tainted m() captureOut2() - SINK(sinkO2["x"]) #$ MISSING:captured + SINK(sinkO2["x"]) #$ captured nonSink1 = { "x": "" } def captureOut1NotCalled(): diff --git a/python/ql/test/experimental/dataflow/variable-capture/global.py b/python/ql/test/experimental/dataflow/variable-capture/global.py index ef36b4a4d57..92d273592b8 100644 --- a/python/ql/test/experimental/dataflow/variable-capture/global.py +++ b/python/ql/test/experimental/dataflow/variable-capture/global.py @@ -78,7 +78,7 @@ def through(tainted): global sinkT1 sinkT1 = tainted captureOut1() - SINK(sinkT1) #$ MISSING:captured + SINK(sinkT1) #$ captured def captureOut2(): def m(): @@ -86,7 +86,7 @@ def through(tainted): sinkT2 = tainted m() captureOut2() - SINK(sinkT2) #$ MISSING:captured + SINK(sinkT2) #$ captured def captureOut1NotCalled(): global nonSinkT1 diff --git a/python/ql/test/experimental/dataflow/variable-capture/in.py b/python/ql/test/experimental/dataflow/variable-capture/in.py index fffedfb1e77..35fad035355 100644 --- a/python/ql/test/experimental/dataflow/variable-capture/in.py +++ b/python/ql/test/experimental/dataflow/variable-capture/in.py @@ -34,17 +34,17 @@ def SINK_F(x): def inParam(tainted): def captureIn1(): sinkI1 = tainted - SINK(sinkI1) #$ MISSING:captured + SINK(sinkI1) #$ captured captureIn1() def captureIn2(): def m(): sinkI2 = tainted - SINK(sinkI2) #$ MISSING:captured + SINK(sinkI2) #$ captured m() captureIn2() - captureIn3 = lambda arg: SINK(tainted) + captureIn3 = lambda arg: SINK(tainted) #$ captured captureIn3("") def captureIn1NotCalled(): @@ -68,17 +68,17 @@ def inLocal(): def captureIn1(): sinkI1 = tainted - SINK(sinkI1) #$ MISSING:captured + SINK(sinkI1) #$ captured captureIn1() def captureIn2(): def m(): sinkI2 = tainted - SINK(sinkI2) #$ MISSING:captured + SINK(sinkI2) #$ captured m() captureIn2() - captureIn3 = lambda arg: SINK(tainted) + captureIn3 = lambda arg: SINK(tainted) #$ captured captureIn3("") def captureIn1NotCalled(): diff --git a/python/ql/test/experimental/dataflow/variable-capture/nonlocal.py b/python/ql/test/experimental/dataflow/variable-capture/nonlocal.py index 0e8233532af..91a06aae639 100644 --- a/python/ql/test/experimental/dataflow/variable-capture/nonlocal.py +++ b/python/ql/test/experimental/dataflow/variable-capture/nonlocal.py @@ -38,7 +38,7 @@ def out(): nonlocal sinkO1 sinkO1 = SOURCE captureOut1() - SINK(sinkO1) #$ MISSING:captured + SINK(sinkO1) #$ captured sinkO2 = "" def captureOut2(): @@ -47,7 +47,7 @@ def out(): sinkO2 = SOURCE m() captureOut2() - SINK(sinkO2) #$ MISSING:captured + SINK(sinkO2) #$ captured nonSink1 = "" def captureOut1NotCalled(): @@ -74,7 +74,7 @@ def through(tainted): nonlocal sinkO1 sinkO1 = tainted captureOut1() - SINK(sinkO1) #$ MISSING:captured + SINK(sinkO1) #$ captured sinkO2 = "" def captureOut2(): @@ -83,7 +83,7 @@ def through(tainted): sinkO2 = tainted m() captureOut2() - SINK(sinkO2) #$ MISSING:captured + SINK(sinkO2) #$ captured nonSink1 = "" def captureOut1NotCalled(): diff --git a/python/ql/test/experimental/dataflow/variable-capture/test_fields.py b/python/ql/test/experimental/dataflow/variable-capture/test_fields.py new file mode 100644 index 00000000000..79f2c4d04f4 --- /dev/null +++ b/python/ql/test/experimental/dataflow/variable-capture/test_fields.py @@ -0,0 +1,51 @@ +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname((__file__)))) +from testlib import expects + +# These are defined so that we can evaluate the test code. +NONSOURCE = "not a source" +SOURCE = "source" + +def is_source(x): + return x == "source" or x == b"source" or x == 42 or x == 42.0 or x == 42j + + +def SINK(x): + if is_source(x): + print("OK") + else: + print("Unexpected flow", x) + + +def SINK_F(x): + if is_source(x): + print("Unexpected flow", x) + else: + print("OK") + +class MyObj(object): + def setFoo(self, foo): + self.foo = foo + + def getFoo(self): + return self.foo + +@expects(3) +def test_captured_field(): + foo = MyObj() + foo.setFoo(NONSOURCE) + + def test(): + SINK(foo.getFoo()) #$ captured + + def read(): + return foo.getFoo() + + SINK_F(read()) + + foo.setFoo(SOURCE) + test() + + SINK(read()) #$ captured \ No newline at end of file diff --git a/python/ql/test/experimental/dataflow/variable-capture/test_library_calls.py b/python/ql/test/experimental/dataflow/variable-capture/test_library_calls.py new file mode 100644 index 00000000000..70b07f66557 --- /dev/null +++ b/python/ql/test/experimental/dataflow/variable-capture/test_library_calls.py @@ -0,0 +1,48 @@ +# Here we test the case where a captured variable is being written inside a library call. + +# All functions starting with "test_" should run and execute `print("OK")` exactly once. +# This can be checked by running validTest.py. + +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname((__file__)))) +from testlib import expects + +# These are defined so that we can evaluate the test code. +NONSOURCE = "not a source" +SOURCE = "source" + +def is_source(x): + return x == "source" or x == b"source" or x == 42 or x == 42.0 or x == 42j + + +def SINK(x): + if is_source(x): + print("OK") + else: + print("Unexpected flow", x) + + +def SINK_F(x): + if is_source(x): + print("Unexpected flow", x) + else: + print("OK") + +# Actual tests start here + +@expects(2) +def test_library_call(): + captured = {"x": NONSOURCE} + + def set(x): + captured["x"] = SOURCE + return x + + SINK_F(captured["x"]) + + for x in map(set, [1]): + pass + + SINK(captured["x"]) #$ MISSING: captured diff --git a/python/ql/test/experimental/meta/debug/InlineTaintTestPaths.ql b/python/ql/test/experimental/meta/debug/InlineTaintTestPaths.ql index 3f082f21fa4..caade9040b7 100644 --- a/python/ql/test/experimental/meta/debug/InlineTaintTestPaths.ql +++ b/python/ql/test/experimental/meta/debug/InlineTaintTestPaths.ql @@ -23,7 +23,7 @@ module Flows = TaintTracking::Global; import Flows::PathGraph // int explorationLimit() { result = 5 } -// module FlowsPartial = Flows::FlowExploration; +// module FlowsPartial = Flows::FlowExplorationFwd; // import FlowsPartial::PartialPathGraph from Flows::PathNode source, Flows::PathNode sink where Flows::flowPath(source, sink) diff --git a/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.expected b/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.expected new file mode 100644 index 00000000000..58698e5ec9d --- /dev/null +++ b/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.expected @@ -0,0 +1,2 @@ +| test_crosstalk.py:8:16:8:18 | ControlFlowNode for f() | bar | +| test_crosstalk.py:13:16:13:18 | ControlFlowNode for g() | baz | diff --git a/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.py b/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.py new file mode 100644 index 00000000000..c58d5770031 --- /dev/null +++ b/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.py @@ -0,0 +1,13 @@ + +def outer(): + from foo import bar, baz + + def inner_bar(): + f = bar + g = baz + return f() + + def inner_baz(): + f = bar + g = baz + return g() \ No newline at end of file diff --git a/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.ql b/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.ql new file mode 100644 index 00000000000..0367e854835 --- /dev/null +++ b/python/ql/test/library-tests/ApiGraphs/py3/test_crosstalk.ql @@ -0,0 +1,8 @@ +import python +import semmle.python.ApiGraphs + +from API::CallNode callNode, string member +where + callNode = API::moduleImport("foo").getMember(member).getACall() and + callNode.getLocation().getFile().getBaseName() = "test_crosstalk.py" +select callNode, member diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 491318ac4f4..0641b60a508 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.5 + +No user-facing changes. + ## 0.8.4 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/released/0.8.5.md b/ruby/ql/lib/change-notes/released/0.8.5.md new file mode 100644 index 00000000000..cb2a467c35b --- /dev/null +++ b/ruby/ql/lib/change-notes/released/0.8.5.md @@ -0,0 +1,3 @@ +## 0.8.5 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 32eff3dc9f3..cbe6bc6b7c6 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.4 +lastReleaseVersion: 0.8.5 diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll index b898fb3be06..3d5a5b2941d 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll @@ -663,7 +663,8 @@ private module TrackInstanceInput implements CallGraphConstruction::InputSig { // We exclude steps into type checked variables. For those, we instead rely on the // type being checked against localFlowStep(nodeFrom, nodeTo, summary) and - not hasAdjacentTypeCheckedReads(nodeTo) + not hasAdjacentTypeCheckedReads(nodeTo) and + not asModulePattern(nodeTo, _) } predicate stepCall(DataFlow::Node nodeFrom, DataFlow::Node nodeTo, StepSummary summary) { diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index 2d09834e623..0ca8f78f2ef 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -143,6 +143,32 @@ module LocalFlow { SsaImpl::adjacentReadPairExt(def, nodeFrom.asExpr(), nodeTo.asExpr()) } + /** + * Holds if SSA definition `def` assigns `value` to the underlying variable. + * + * This is either a direct assignment, `x = value`, or an assignment via + * simple pattern matching + * + * ```rb + * case value + * in Foo => x then ... + * in y => then ... + * end + * ``` + */ + predicate ssaDefAssigns(Ssa::WriteDefinition def, CfgNodes::ExprCfgNode value) { + def.assigns(value) + or + exists(CfgNodes::ExprNodes::CaseExprCfgNode case, CfgNodes::AstCfgNode pattern | + case.getValue() = value and + pattern = case.getBranch(_).(CfgNodes::ExprNodes::InClauseCfgNode).getPattern() + | + def.getWriteAccess() = pattern + or + def.getWriteAccess() = pattern.(CfgNodes::ExprNodes::AsPatternCfgNode).getVariableAccess() + ) + } + /** * Holds if there is a local flow step from `nodeFrom` to `nodeTo` involving * SSA definition `def`. @@ -150,7 +176,7 @@ module LocalFlow { pragma[nomagic] predicate localSsaFlowStep(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) { // Flow from assignment into SSA definition - def.(Ssa::WriteDefinition).assigns(nodeFrom.asExpr()) and + ssaDefAssigns(def, nodeFrom.asExpr()) and nodeTo.(SsaDefinitionExtNode).getDefinitionExt() = def or // Flow from SSA definition to first read @@ -273,7 +299,7 @@ module VariableCapture { or exists(Ssa::Definition def | def.getARead() = e2 and - def.getAnUltimateDefinition().(Ssa::WriteDefinition).assigns(e1) + LocalFlow::ssaDefAssigns(def.getAnUltimateDefinition(), e1) ) } @@ -574,8 +600,7 @@ private module Cached { /** Holds if `n` wraps an SSA definition without ingoing flow. */ private predicate entrySsaDefinition(SsaDefinitionExtNode n) { - n.getDefinitionExt() = - any(SsaImpl::WriteDefinition def | not def.(Ssa::WriteDefinition).assigns(_)) + n.getDefinitionExt() = any(SsaImpl::WriteDefinition def | not LocalFlow::ssaDefAssigns(def, _)) } pragma[nomagic] diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll index a75567bccdf..1f2e8188d72 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll @@ -79,11 +79,16 @@ private module Cached { cached predicate defaultAdditionalTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { // value of `case` expression into variables in patterns - exists(CfgNodes::ExprNodes::CaseExprCfgNode case, CfgNodes::ExprNodes::InClauseCfgNode clause | - nodeFrom.asExpr() = case.getValue() and + exists( + CfgNodes::ExprNodes::CaseExprCfgNode case, CfgNodes::ExprCfgNode value, + CfgNodes::ExprNodes::InClauseCfgNode clause, Ssa::Definition def + | + nodeFrom.asExpr() = value and + value = case.getValue() and clause = case.getBranch(_) and - nodeTo.(SsaDefinitionExtNode).getDefinitionExt().(Ssa::Definition).getControlFlowNode() = - variablesInPattern(clause.getPattern()) + def = nodeTo.(SsaDefinitionExtNode).getDefinitionExt() and + def.getControlFlowNode() = variablesInPattern(clause.getPattern()) and + not LocalFlow::ssaDefAssigns(def, value) ) or // operation involving `nodeFrom` diff --git a/ruby/ql/lib/codeql/ruby/typetracking/internal/SummaryTypeTracker.qll b/ruby/ql/lib/codeql/ruby/typetracking/internal/SummaryTypeTracker.qll deleted file mode 100644 index efe7629fffc..00000000000 --- a/ruby/ql/lib/codeql/ruby/typetracking/internal/SummaryTypeTracker.qll +++ /dev/null @@ -1,412 +0,0 @@ -/** - * Provides the implementation of type tracking steps through flow summaries. - * To use this, you must implement the `Input` signature. You can then use the predicates in the `Output` - * signature to implement the predicates of the same names inside `TypeTrackerSpecific.qll`. - */ - -/** The classes and predicates needed to generate type-tracking steps from summaries. */ -signature module Input { - // Dataflow nodes - class Node; - - // Content - class TypeTrackerContent; - - class TypeTrackerContentFilter; - - // Relating content and filters - /** - * Gets a content filter to use for a `WithoutContent[content]` step, (data is not allowed to be stored in `content`) - * or has no result if - * the step should be treated as ordinary flow. - * - * `WithoutContent` is often used to perform strong updates on individual collection elements, but for - * type-tracking this is rarely beneficial and quite expensive. However, `WithoutContent` can be quite useful - * for restricting the type of an object, and in these cases we translate it to a filter. - */ - TypeTrackerContentFilter getFilterFromWithoutContentStep(TypeTrackerContent content); - - /** - * Gets a content filter to use for a `WithContent[content]` step, (data must be stored in `content`) - * or has no result if - * the step cannot be handled by type-tracking. - * - * `WithContent` is often used to perform strong updates on individual collection elements (or rather - * to preserve those that didn't get updated). But for type-tracking this is rarely beneficial and quite expensive. - * However, `WithContent` can be quite useful for restricting the type of an object, and in these cases we translate it to a filter. - */ - TypeTrackerContentFilter getFilterFromWithContentStep(TypeTrackerContent content); - - // Summaries and their stacks - class SummaryComponent; - - class SummaryComponentStack { - SummaryComponent head(); - } - - /** Gets a singleton stack containing `component`. */ - SummaryComponentStack singleton(SummaryComponent component); - - /** - * Gets the stack obtained by pushing `head` onto `tail`. - */ - SummaryComponentStack push(SummaryComponent head, SummaryComponentStack tail); - - /** Gets a singleton stack representing a return. */ - SummaryComponent return(); - - // Relating content to summaries - /** Gets a summary component for content `c`. */ - SummaryComponent content(TypeTrackerContent contents); - - /** Gets a summary component where data is not allowed to be stored in `contents`. */ - SummaryComponent withoutContent(TypeTrackerContent contents); - - /** Gets a summary component where data must be stored in `contents`. */ - SummaryComponent withContent(TypeTrackerContent contents); - - // Callables - class SummarizedCallable { - predicate propagatesFlow( - SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue - ); - } - - // Relating nodes to summaries - /** - * Gets a dataflow node respresenting the argument of `call` indicated by `arg`. - * - * Returns the post-update node of the argument when `isPostUpdate` is true. - */ - Node argumentOf(Node call, SummaryComponent arg, boolean isPostUpdate); - - /** Gets a dataflow node respresenting the parameter of `callable` indicated by `param`. */ - Node parameterOf(Node callable, SummaryComponent param); - - /** Gets a dataflow node respresenting the return of `callable` indicated by `return`. */ - Node returnOf(Node callable, SummaryComponent return); - - // Relating callables to nodes - /** Gets a dataflow node respresenting a call to `callable`. */ - Node callTo(SummarizedCallable callable); -} - -/** - * The predicates provided by a summary type tracker. - * These are meant to be used in `TypeTrackerSpecific.qll` - * inside the predicates of the same names. - */ -signature module Output { - /** - * Holds if there is a level step from `nodeFrom` to `nodeTo`, which does not depend on the call graph. - */ - predicate levelStepNoCall(I::Node nodeFrom, I::Node nodeTo); - - /** - * Holds if `nodeTo` is the result of accessing the `content` content of `nodeFrom`. - */ - predicate basicLoadStep(I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent content); - - /** - * Holds if `nodeFrom` is being written to the `content` content of the object in `nodeTo`. - */ - predicate basicStoreStep(I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent content); - - /** - * Holds if the `loadContent` of `nodeFrom` is stored in the `storeContent` of `nodeTo`. - */ - predicate basicLoadStoreStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent loadContent, - I::TypeTrackerContent storeContent - ); - - /** - * Holds if type-tracking should step from `nodeFrom` to `nodeTo` but block flow of contents matched by `filter` through here. - */ - predicate basicWithoutContentStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContentFilter filter - ); - - /** - * Holds if type-tracking should step from `nodeFrom` to `nodeTo` if inside a content matched by `filter`. - */ - predicate basicWithContentStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContentFilter filter - ); -} - -/** - * Implementation of the summary type tracker, that is type tracking through flow summaries. - */ -module SummaryFlow implements Output { - pragma[nomagic] - private predicate isNonLocal(I::SummaryComponent component) { - component = I::content(_) - or - component = I::withContent(_) - } - - pragma[nomagic] - private predicate hasLoadSummary( - I::SummarizedCallable callable, I::TypeTrackerContent contents, I::SummaryComponentStack input, - I::SummaryComponentStack output - ) { - callable.propagatesFlow(I::push(I::content(contents), input), output, true) and - not isNonLocal(input.head()) and - not isNonLocal(output.head()) - } - - pragma[nomagic] - private predicate hasStoreSummary( - I::SummarizedCallable callable, I::TypeTrackerContent contents, I::SummaryComponentStack input, - I::SummaryComponentStack output - ) { - not isNonLocal(input.head()) and - not isNonLocal(output.head()) and - ( - callable.propagatesFlow(input, I::push(I::content(contents), output), true) - or - // Allow the input to start with an arbitrary WithoutContent[X]. - // Since type-tracking only tracks one content deep, and we're about to store into another content, - // we're already preventing the input from being in a content. - callable - .propagatesFlow(I::push(I::withoutContent(_), input), - I::push(I::content(contents), output), true) - ) - } - - pragma[nomagic] - private predicate hasLoadStoreSummary( - I::SummarizedCallable callable, I::TypeTrackerContent loadContents, - I::TypeTrackerContent storeContents, I::SummaryComponentStack input, - I::SummaryComponentStack output - ) { - callable - .propagatesFlow(I::push(I::content(loadContents), input), - I::push(I::content(storeContents), output), true) and - not isNonLocal(input.head()) and - not isNonLocal(output.head()) - } - - pragma[nomagic] - private predicate hasWithoutContentSummary( - I::SummarizedCallable callable, I::TypeTrackerContentFilter filter, - I::SummaryComponentStack input, I::SummaryComponentStack output - ) { - exists(I::TypeTrackerContent content | - callable.propagatesFlow(I::push(I::withoutContent(content), input), output, true) and - filter = I::getFilterFromWithoutContentStep(content) and - not isNonLocal(input.head()) and - not isNonLocal(output.head()) and - input != output - ) - } - - pragma[nomagic] - private predicate hasWithContentSummary( - I::SummarizedCallable callable, I::TypeTrackerContentFilter filter, - I::SummaryComponentStack input, I::SummaryComponentStack output - ) { - exists(I::TypeTrackerContent content | - callable.propagatesFlow(I::push(I::withContent(content), input), output, true) and - filter = I::getFilterFromWithContentStep(content) and - not isNonLocal(input.head()) and - not isNonLocal(output.head()) and - input != output - ) - } - - private predicate componentLevelStep(I::SummaryComponent component) { - exists(I::TypeTrackerContent content | - component = I::withoutContent(content) and - not exists(I::getFilterFromWithoutContentStep(content)) - ) - } - - /** - * Gets a data flow `I::Node` corresponding an argument or return value of `call`, - * as specified by `component`. `isOutput` indicates whether the node represents - * an output node or an input node. - */ - bindingset[call, component] - private I::Node evaluateSummaryComponentLocal( - I::Node call, I::SummaryComponent component, boolean isOutput - ) { - result = I::argumentOf(call, component, isOutput) - or - component = I::return() and - result = call and - isOutput = true - } - - /** - * Holds if `callable` is relevant for type-tracking and we therefore want `stack` to - * be evaluated locally at its call sites. - */ - pragma[nomagic] - private predicate dependsOnSummaryComponentStack( - I::SummarizedCallable callable, I::SummaryComponentStack stack - ) { - exists(I::callTo(callable)) and - ( - callable.propagatesFlow(stack, _, true) - or - callable.propagatesFlow(_, stack, true) - or - // include store summaries as they may skip an initial step at the input - hasStoreSummary(callable, _, stack, _) - ) - or - dependsOnSummaryComponentStackCons(callable, _, stack) - } - - pragma[nomagic] - private predicate dependsOnSummaryComponentStackCons( - I::SummarizedCallable callable, I::SummaryComponent head, I::SummaryComponentStack tail - ) { - dependsOnSummaryComponentStack(callable, I::push(head, tail)) - } - - pragma[nomagic] - private predicate dependsOnSummaryComponentStackConsLocal( - I::SummarizedCallable callable, I::SummaryComponent head, I::SummaryComponentStack tail - ) { - dependsOnSummaryComponentStackCons(callable, head, tail) and - not isNonLocal(head) - } - - pragma[nomagic] - private predicate dependsOnSummaryComponentStackLeaf( - I::SummarizedCallable callable, I::SummaryComponent leaf - ) { - dependsOnSummaryComponentStack(callable, I::singleton(leaf)) - } - - /** - * Gets a data flow I::Node corresponding to the local input or output of `call` - * identified by `stack`, if possible. - */ - pragma[nomagic] - private I::Node evaluateSummaryComponentStackLocal( - I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack stack, boolean isOutput - ) { - exists(I::SummaryComponent component | - dependsOnSummaryComponentStackLeaf(callable, component) and - stack = I::singleton(component) and - call = I::callTo(callable) and - result = evaluateSummaryComponentLocal(call, component, isOutput) - ) - or - exists( - I::Node prev, I::SummaryComponent head, I::SummaryComponentStack tail, boolean isOutput0 - | - prev = evaluateSummaryComponentStackLocal(callable, call, tail, isOutput0) and - dependsOnSummaryComponentStackConsLocal(callable, pragma[only_bind_into](head), - pragma[only_bind_out](tail)) and - stack = I::push(pragma[only_bind_out](head), pragma[only_bind_out](tail)) - | - // `Parameter[X]` is only allowed in the output of flow summaries (hence `isOutput = true`), - // however the target of the parameter (e.g. `Argument[Y].Parameter[X]`) should be fetched - // not from a post-update argument node (hence `isOutput0 = false`) - result = I::parameterOf(prev, head) and - isOutput0 = false and - isOutput = true - or - // `ReturnValue` is only allowed in the input of flow summaries (hence `isOutput = false`), - // and the target of the return value (e.g. `Argument[X].ReturnValue`) should be fetched not - // from a post-update argument node (hence `isOutput0 = false`) - result = I::returnOf(prev, head) and - isOutput0 = false and - isOutput = false - or - componentLevelStep(head) and - result = prev and - isOutput = isOutput0 - ) - } - - // Implement Output - predicate levelStepNoCall(I::Node nodeFrom, I::Node nodeTo) { - exists( - I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, - I::SummaryComponentStack output - | - callable.propagatesFlow(input, output, true) and - call = I::callTo(callable) and - nodeFrom = evaluateSummaryComponentStackLocal(callable, call, input, false) and - nodeTo = evaluateSummaryComponentStackLocal(callable, call, output, true) - ) - } - - predicate basicLoadStep(I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent content) { - exists( - I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, - I::SummaryComponentStack output - | - hasLoadSummary(callable, content, pragma[only_bind_into](input), - pragma[only_bind_into](output)) and - call = I::callTo(callable) and - nodeFrom = evaluateSummaryComponentStackLocal(callable, call, input, false) and - nodeTo = evaluateSummaryComponentStackLocal(callable, call, output, true) - ) - } - - predicate basicStoreStep(I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent content) { - exists( - I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, - I::SummaryComponentStack output - | - hasStoreSummary(callable, content, pragma[only_bind_into](input), - pragma[only_bind_into](output)) and - call = I::callTo(callable) and - nodeFrom = evaluateSummaryComponentStackLocal(callable, call, input, false) and - nodeTo = evaluateSummaryComponentStackLocal(callable, call, output, true) - ) - } - - predicate basicLoadStoreStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent loadContent, - I::TypeTrackerContent storeContent - ) { - exists( - I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, - I::SummaryComponentStack output - | - hasLoadStoreSummary(callable, loadContent, storeContent, pragma[only_bind_into](input), - pragma[only_bind_into](output)) and - call = I::callTo(callable) and - nodeFrom = evaluateSummaryComponentStackLocal(callable, call, input, false) and - nodeTo = evaluateSummaryComponentStackLocal(callable, call, output, true) - ) - } - - predicate basicWithoutContentStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContentFilter filter - ) { - exists( - I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, - I::SummaryComponentStack output - | - hasWithoutContentSummary(callable, filter, pragma[only_bind_into](input), - pragma[only_bind_into](output)) and - call = I::callTo(callable) and - nodeFrom = evaluateSummaryComponentStackLocal(callable, call, input, false) and - nodeTo = evaluateSummaryComponentStackLocal(callable, call, output, true) - ) - } - - predicate basicWithContentStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContentFilter filter - ) { - exists( - I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, - I::SummaryComponentStack output - | - hasWithContentSummary(callable, filter, pragma[only_bind_into](input), - pragma[only_bind_into](output)) and - call = I::callTo(callable) and - nodeFrom = evaluateSummaryComponentStackLocal(callable, call, input, false) and - nodeTo = evaluateSummaryComponentStackLocal(callable, call, output, true) - ) - } -} diff --git a/ruby/ql/lib/codeql/ruby/typetracking/internal/TypeTrackingImpl.qll b/ruby/ql/lib/codeql/ruby/typetracking/internal/TypeTrackingImpl.qll index 13f6c1de149..750c96ef723 100644 --- a/ruby/ql/lib/codeql/ruby/typetracking/internal/TypeTrackingImpl.qll +++ b/ruby/ql/lib/codeql/ruby/typetracking/internal/TypeTrackingImpl.qll @@ -3,7 +3,7 @@ import codeql.typetracking.internal.TypeTrackingImpl as SharedImpl private import codeql.ruby.AST private import codeql.ruby.CFG as Cfg private import Cfg::CfgNodes -private import SummaryTypeTracker as SummaryTypeTracker +private import codeql.typetracking.internal.SummaryTypeTracker as SummaryTypeTracker private import codeql.ruby.DataFlow private import codeql.ruby.dataflow.FlowSummary as FlowSummary private import codeql.ruby.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon @@ -133,11 +133,11 @@ private module SummaryTypeTrackerInput implements SummaryTypeTracker::Input { class Node = DataFlow::Node; // Content - class TypeTrackerContent = DataFlowPublic::ContentSet; + class Content = DataFlowPublic::ContentSet; - class TypeTrackerContentFilter = TypeTrackingInput::ContentFilter; + class ContentFilter = TypeTrackingInput::ContentFilter; - TypeTrackerContentFilter getFilterFromWithoutContentStep(TypeTrackerContent content) { + ContentFilter getFilterFromWithoutContentStep(Content content) { ( content.isAnyElement() or @@ -150,7 +150,7 @@ private module SummaryTypeTrackerInput implements SummaryTypeTracker::Input { result = MkElementFilter() } - TypeTrackerContentFilter getFilterFromWithContentStep(TypeTrackerContent content) { + ContentFilter getFilterFromWithContentStep(Content content) { ( content.isAnyElement() or diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 64919a81449..c460d2d3638 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.5-dev +version: 0.8.6-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 65c057c8672..0e589135e41 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.5 + +No user-facing changes. + ## 0.8.4 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/0.8.5.md b/ruby/ql/src/change-notes/released/0.8.5.md new file mode 100644 index 00000000000..cb2a467c35b --- /dev/null +++ b/ruby/ql/src/change-notes/released/0.8.5.md @@ -0,0 +1,3 @@ +## 0.8.5 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 32eff3dc9f3..cbe6bc6b7c6 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.4 +lastReleaseVersion: 0.8.5 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index ae6ffff8506..9dc44497c14 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.5-dev +version: 0.8.6-dev groups: - ruby - queries diff --git a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected index 1ce52ccdac6..bc09b81014a 100644 --- a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected @@ -2528,6 +2528,8 @@ | local_dataflow.rb:78:12:78:20 | [post] self | local_dataflow.rb:85:22:85:28 | self | | local_dataflow.rb:78:12:78:20 | [post] self | local_dataflow.rb:86:28:86:34 | self | | local_dataflow.rb:78:12:78:20 | [post] self | local_dataflow.rb:87:20:87:26 | self | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:79:13:79:13 | b | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:80:8:80:8 | a | | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:79:20:79:26 | self | | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:80:24:80:30 | self | | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:82:7:82:13 | self | diff --git a/ruby/ql/test/library-tests/dataflow/local/local_dataflow.rb b/ruby/ql/test/library-tests/dataflow/local/local_dataflow.rb index d72ed8ac5d4..286092ed172 100644 --- a/ruby/ql/test/library-tests/dataflow/local/local_dataflow.rb +++ b/ruby/ql/test/library-tests/dataflow/local/local_dataflow.rb @@ -76,8 +76,8 @@ def test_case x end z = case source(1) - in 5 => b then sink(b) # $ hasTaintFlow=1 - in a if a > 0 then sink(a) # $ hasTaintFlow=1 + in 5 => b then sink(b) # $ hasValueFlow=1 + in a if a > 0 then sink(a) # $ hasValueFlow=1 in [c, *d, e ] then [ sink(c), # $ hasTaintFlow=1 sink(d), # $ hasTaintFlow=1 diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 2c5050cea76..d14dc358baf 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.5 + +No user-facing changes. + ## 0.1.4 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.5.md b/shared/controlflow/change-notes/released/0.1.5.md new file mode 100644 index 00000000000..83cd9c5ff46 --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.5.md @@ -0,0 +1,3 @@ +## 0.1.5 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index e8ee3af8ef9..157cff8108d 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.4 +lastReleaseVersion: 0.1.5 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 347326476a8..9f1a41b9c15 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.5-dev +version: 0.1.6-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index d932505cd28..39444bf389a 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.5 + +No user-facing changes. + ## 0.1.4 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/0.1.5.md b/shared/dataflow/change-notes/released/0.1.5.md new file mode 100644 index 00000000000..83cd9c5ff46 --- /dev/null +++ b/shared/dataflow/change-notes/released/0.1.5.md @@ -0,0 +1,3 @@ +## 0.1.5 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index e8ee3af8ef9..157cff8108d 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.4 +lastReleaseVersion: 0.1.5 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index acb359071e4..d53e750de32 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.1.5-dev +version: 0.1.6-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 9dd0f451a13..8fdbd159d53 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5 + +No user-facing changes. + ## 0.2.4 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.5.md b/shared/mad/change-notes/released/0.2.5.md new file mode 100644 index 00000000000..5837551476f --- /dev/null +++ b/shared/mad/change-notes/released/0.2.5.md @@ -0,0 +1,3 @@ +## 0.2.5 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 7f1e3841dcd..211454ed306 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.5 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index daa8bc58f66..47c23b2976f 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.5-dev +version: 0.2.6-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 4992dcad49f..a66789ca7f5 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.4 + +No user-facing changes. + ## 0.0.3 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.4.md b/shared/rangeanalysis/change-notes/released/0.0.4.md new file mode 100644 index 00000000000..eefe286a4d8 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.4.md @@ -0,0 +1,3 @@ +## 0.0.4 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index a24b693d1e7..ec411a674bc 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.3 +lastReleaseVersion: 0.0.4 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 369d092a98f..f0c5bd25a69 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.4-dev +version: 0.0.5-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index c753fbda232..3cf342c9f29 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5 + +No user-facing changes. + ## 0.2.4 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.5.md b/shared/regex/change-notes/released/0.2.5.md new file mode 100644 index 00000000000..5837551476f --- /dev/null +++ b/shared/regex/change-notes/released/0.2.5.md @@ -0,0 +1,3 @@ +## 0.2.5 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 7f1e3841dcd..211454ed306 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.5 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 4567e48d59d..33b5952fe87 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.5-dev +version: 0.2.6-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 1cd20a42e1b..d1f2a74fec0 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5 + +No user-facing changes. + ## 0.2.4 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.5.md b/shared/ssa/change-notes/released/0.2.5.md new file mode 100644 index 00000000000..5837551476f --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.5.md @@ -0,0 +1,3 @@ +## 0.2.5 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 7f1e3841dcd..211454ed306 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.5 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 5ffdf021ecb..00e6b698e43 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.5-dev +version: 0.2.6-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index d7831747b12..4ffbff1e0c4 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.4 + +No user-facing changes. + ## 0.0.3 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.4.md b/shared/threat-models/change-notes/released/0.0.4.md new file mode 100644 index 00000000000..eefe286a4d8 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.4.md @@ -0,0 +1,3 @@ +## 0.0.4 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index a24b693d1e7..ec411a674bc 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.3 +lastReleaseVersion: 0.0.4 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index e96d6cf5dc4..abe9e10f4af 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.4-dev +version: 0.0.5-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 9fa52e48055..a0bfc02bcbf 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5 + +No user-facing changes. + ## 0.2.4 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.5.md b/shared/tutorial/change-notes/released/0.2.5.md new file mode 100644 index 00000000000..5837551476f --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.5.md @@ -0,0 +1,3 @@ +## 0.2.5 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 7f1e3841dcd..211454ed306 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.5 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index f086872a3a9..9e095cb2b6c 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.5-dev +version: 0.2.6-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index f675bfa9db2..2236b1a2d5d 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5 + +No user-facing changes. + ## 0.2.4 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.5.md b/shared/typetracking/change-notes/released/0.2.5.md new file mode 100644 index 00000000000..5837551476f --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.5.md @@ -0,0 +1,3 @@ +## 0.2.5 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 7f1e3841dcd..211454ed306 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.5 diff --git a/shared/typetracking/codeql/typetracking/TypeTracking.qll b/shared/typetracking/codeql/typetracking/TypeTracking.qll index 19a00a0c53c..044b672fe85 100644 --- a/shared/typetracking/codeql/typetracking/TypeTracking.qll +++ b/shared/typetracking/codeql/typetracking/TypeTracking.qll @@ -113,6 +113,12 @@ signature module TypeTrackingInput { * themselves. */ predicate hasFeatureBacktrackStoreTarget(); + + /** + * Holds if a non-standard `flowsTo` predicate is needed, i.e., one that is not + * simply `simpleLocalSmallStep*(localSource, dst)`. + */ + default predicate nonStandardFlowsTo(LocalSourceNode localSource, Node dst) { none() } } private import internal.TypeTrackingImpl as Impl diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/SummaryTypeTracker.qll b/shared/typetracking/codeql/typetracking/internal/SummaryTypeTracker.qll similarity index 86% rename from python/ql/lib/semmle/python/dataflow/new/internal/SummaryTypeTracker.qll rename to shared/typetracking/codeql/typetracking/internal/SummaryTypeTracker.qll index efe7629fffc..b942446d43b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/SummaryTypeTracker.qll +++ b/shared/typetracking/codeql/typetracking/internal/SummaryTypeTracker.qll @@ -10,9 +10,9 @@ signature module Input { class Node; // Content - class TypeTrackerContent; + class Content; - class TypeTrackerContentFilter; + class ContentFilter; // Relating content and filters /** @@ -24,7 +24,7 @@ signature module Input { * type-tracking this is rarely beneficial and quite expensive. However, `WithoutContent` can be quite useful * for restricting the type of an object, and in these cases we translate it to a filter. */ - TypeTrackerContentFilter getFilterFromWithoutContentStep(TypeTrackerContent content); + ContentFilter getFilterFromWithoutContentStep(Content content); /** * Gets a content filter to use for a `WithContent[content]` step, (data must be stored in `content`) @@ -35,7 +35,7 @@ signature module Input { * to preserve those that didn't get updated). But for type-tracking this is rarely beneficial and quite expensive. * However, `WithContent` can be quite useful for restricting the type of an object, and in these cases we translate it to a filter. */ - TypeTrackerContentFilter getFilterFromWithContentStep(TypeTrackerContent content); + ContentFilter getFilterFromWithContentStep(Content content); // Summaries and their stacks class SummaryComponent; @@ -57,13 +57,13 @@ signature module Input { // Relating content to summaries /** Gets a summary component for content `c`. */ - SummaryComponent content(TypeTrackerContent contents); + SummaryComponent content(Content contents); /** Gets a summary component where data is not allowed to be stored in `contents`. */ - SummaryComponent withoutContent(TypeTrackerContent contents); + SummaryComponent withoutContent(Content contents); /** Gets a summary component where data must be stored in `contents`. */ - SummaryComponent withContent(TypeTrackerContent contents); + SummaryComponent withContent(Content contents); // Callables class SummarizedCallable { @@ -105,34 +105,29 @@ signature module Output { /** * Holds if `nodeTo` is the result of accessing the `content` content of `nodeFrom`. */ - predicate basicLoadStep(I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent content); + predicate basicLoadStep(I::Node nodeFrom, I::Node nodeTo, I::Content content); /** * Holds if `nodeFrom` is being written to the `content` content of the object in `nodeTo`. */ - predicate basicStoreStep(I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent content); + predicate basicStoreStep(I::Node nodeFrom, I::Node nodeTo, I::Content content); /** * Holds if the `loadContent` of `nodeFrom` is stored in the `storeContent` of `nodeTo`. */ predicate basicLoadStoreStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent loadContent, - I::TypeTrackerContent storeContent + I::Node nodeFrom, I::Node nodeTo, I::Content loadContent, I::Content storeContent ); /** * Holds if type-tracking should step from `nodeFrom` to `nodeTo` but block flow of contents matched by `filter` through here. */ - predicate basicWithoutContentStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContentFilter filter - ); + predicate basicWithoutContentStep(I::Node nodeFrom, I::Node nodeTo, I::ContentFilter filter); /** * Holds if type-tracking should step from `nodeFrom` to `nodeTo` if inside a content matched by `filter`. */ - predicate basicWithContentStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContentFilter filter - ); + predicate basicWithContentStep(I::Node nodeFrom, I::Node nodeTo, I::ContentFilter filter); } /** @@ -148,7 +143,7 @@ module SummaryFlow implements Output { pragma[nomagic] private predicate hasLoadSummary( - I::SummarizedCallable callable, I::TypeTrackerContent contents, I::SummaryComponentStack input, + I::SummarizedCallable callable, I::Content contents, I::SummaryComponentStack input, I::SummaryComponentStack output ) { callable.propagatesFlow(I::push(I::content(contents), input), output, true) and @@ -158,7 +153,7 @@ module SummaryFlow implements Output { pragma[nomagic] private predicate hasStoreSummary( - I::SummarizedCallable callable, I::TypeTrackerContent contents, I::SummaryComponentStack input, + I::SummarizedCallable callable, I::Content contents, I::SummaryComponentStack input, I::SummaryComponentStack output ) { not isNonLocal(input.head()) and @@ -177,9 +172,8 @@ module SummaryFlow implements Output { pragma[nomagic] private predicate hasLoadStoreSummary( - I::SummarizedCallable callable, I::TypeTrackerContent loadContents, - I::TypeTrackerContent storeContents, I::SummaryComponentStack input, - I::SummaryComponentStack output + I::SummarizedCallable callable, I::Content loadContents, I::Content storeContents, + I::SummaryComponentStack input, I::SummaryComponentStack output ) { callable .propagatesFlow(I::push(I::content(loadContents), input), @@ -190,10 +184,10 @@ module SummaryFlow implements Output { pragma[nomagic] private predicate hasWithoutContentSummary( - I::SummarizedCallable callable, I::TypeTrackerContentFilter filter, - I::SummaryComponentStack input, I::SummaryComponentStack output + I::SummarizedCallable callable, I::ContentFilter filter, I::SummaryComponentStack input, + I::SummaryComponentStack output ) { - exists(I::TypeTrackerContent content | + exists(I::Content content | callable.propagatesFlow(I::push(I::withoutContent(content), input), output, true) and filter = I::getFilterFromWithoutContentStep(content) and not isNonLocal(input.head()) and @@ -204,10 +198,10 @@ module SummaryFlow implements Output { pragma[nomagic] private predicate hasWithContentSummary( - I::SummarizedCallable callable, I::TypeTrackerContentFilter filter, - I::SummaryComponentStack input, I::SummaryComponentStack output + I::SummarizedCallable callable, I::ContentFilter filter, I::SummaryComponentStack input, + I::SummaryComponentStack output ) { - exists(I::TypeTrackerContent content | + exists(I::Content content | callable.propagatesFlow(I::push(I::withContent(content), input), output, true) and filter = I::getFilterFromWithContentStep(content) and not isNonLocal(input.head()) and @@ -217,7 +211,7 @@ module SummaryFlow implements Output { } private predicate componentLevelStep(I::SummaryComponent component) { - exists(I::TypeTrackerContent content | + exists(I::Content content | component = I::withoutContent(content) and not exists(I::getFilterFromWithoutContentStep(content)) ) @@ -338,7 +332,7 @@ module SummaryFlow implements Output { ) } - predicate basicLoadStep(I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent content) { + predicate basicLoadStep(I::Node nodeFrom, I::Node nodeTo, I::Content content) { exists( I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, I::SummaryComponentStack output @@ -351,7 +345,7 @@ module SummaryFlow implements Output { ) } - predicate basicStoreStep(I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent content) { + predicate basicStoreStep(I::Node nodeFrom, I::Node nodeTo, I::Content content) { exists( I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, I::SummaryComponentStack output @@ -365,8 +359,7 @@ module SummaryFlow implements Output { } predicate basicLoadStoreStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContent loadContent, - I::TypeTrackerContent storeContent + I::Node nodeFrom, I::Node nodeTo, I::Content loadContent, I::Content storeContent ) { exists( I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, @@ -380,9 +373,7 @@ module SummaryFlow implements Output { ) } - predicate basicWithoutContentStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContentFilter filter - ) { + predicate basicWithoutContentStep(I::Node nodeFrom, I::Node nodeTo, I::ContentFilter filter) { exists( I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, I::SummaryComponentStack output @@ -395,9 +386,7 @@ module SummaryFlow implements Output { ) } - predicate basicWithContentStep( - I::Node nodeFrom, I::Node nodeTo, I::TypeTrackerContentFilter filter - ) { + predicate basicWithContentStep(I::Node nodeFrom, I::Node nodeTo, I::ContentFilter filter) { exists( I::SummarizedCallable callable, I::Node call, I::SummaryComponentStack input, I::SummaryComponentStack output diff --git a/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll b/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll index e8b60d08ae8..563813aab92 100644 --- a/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll +++ b/shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll @@ -249,18 +249,15 @@ module TypeTracking { pragma[inline] private predicate isLocalSourceNode(LocalSourceNode n) { any() } - /** - * Holds if there is flow from `localSource` to `dst` using zero or more - * `simpleLocalSmallStep`s. - */ cached - predicate flowsTo(Node localSource, Node dst) { + predicate standardFlowsTo(Node localSource, Node dst) { + not nonStandardFlowsTo(_, _) and // explicit type check in base case to avoid repeated type tests in recursive case isLocalSourceNode(localSource) and dst = localSource or exists(Node mid | - flowsTo(localSource, mid) and + standardFlowsTo(localSource, mid) and simpleLocalSmallStep(mid, dst) ) } @@ -278,6 +275,16 @@ module TypeTracking { import Cached + /** + * Holds if there is flow from `localSource` to `dst` using zero or more + * `simpleLocalSmallStep`s. + */ + predicate flowsTo(LocalSourceNode localSource, Node dst) { + nonStandardFlowsTo(localSource, dst) + or + standardFlowsTo(localSource, dst) + } + /** * A description of a step on an inter-procedural data flow path. */ diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 150d6da930c..24301a5c13e 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.5-dev +version: 0.2.6-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 41d6cb49505..9db98dbb2d0 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5 + +No user-facing changes. + ## 0.2.4 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.5.md b/shared/typos/change-notes/released/0.2.5.md new file mode 100644 index 00000000000..5837551476f --- /dev/null +++ b/shared/typos/change-notes/released/0.2.5.md @@ -0,0 +1,3 @@ +## 0.2.5 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 7f1e3841dcd..211454ed306 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.5 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index a67d0933613..3c4ea9d6fb2 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.5-dev +version: 0.2.6-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index f17102565c0..a1df29447d5 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5 + +No user-facing changes. + ## 0.2.4 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.5.md b/shared/util/change-notes/released/0.2.5.md new file mode 100644 index 00000000000..5837551476f --- /dev/null +++ b/shared/util/change-notes/released/0.2.5.md @@ -0,0 +1,3 @@ +## 0.2.5 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 7f1e3841dcd..211454ed306 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.5 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index ac7cf912e4d..6652d73fba1 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.5-dev +version: 0.2.6-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index dc0dbe801be..aa342042f47 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.5 + +No user-facing changes. + ## 0.2.4 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.5.md b/shared/yaml/change-notes/released/0.2.5.md new file mode 100644 index 00000000000..5837551476f --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.5.md @@ -0,0 +1,3 @@ +## 0.2.5 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 7f1e3841dcd..211454ed306 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.5 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index c3bafd4ad74..f13f8aeca74 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.5-dev +version: 0.2.6-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index a74ccb93732..16d44561346 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.5 + +No user-facing changes. + ## 0.3.4 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/released/0.3.5.md b/swift/ql/lib/change-notes/released/0.3.5.md new file mode 100644 index 00000000000..7a86712e637 --- /dev/null +++ b/swift/ql/lib/change-notes/released/0.3.5.md @@ -0,0 +1,3 @@ +## 0.3.5 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 5ed15c24b9c..468917f2543 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.4 +lastReleaseVersion: 0.3.5 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 23cbcdcce28..2a4fe611768 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.5-dev +version: 0.3.6-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index c58a186f725..689f4e90b87 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.5 + +No user-facing changes. + ## 0.3.4 ### Minor Analysis Improvements diff --git a/swift/ql/src/change-notes/released/0.3.5.md b/swift/ql/src/change-notes/released/0.3.5.md new file mode 100644 index 00000000000..7a86712e637 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.5.md @@ -0,0 +1,3 @@ +## 0.3.5 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 5ed15c24b9c..468917f2543 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.4 +lastReleaseVersion: 0.3.5 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 0998bebd616..180db628f9e 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.5-dev +version: 0.3.6-dev groups: - swift - queries diff --git a/swift/ql/test/library-tests/dataflow/flowsources/customurlschemes.swift b/swift/ql/test/library-tests/dataflow/flowsources/customurlschemes.swift index eb50c15824b..a6d81a299da 100644 --- a/swift/ql/test/library-tests/dataflow/flowsources/customurlschemes.swift +++ b/swift/ql/test/library-tests/dataflow/flowsources/customurlschemes.swift @@ -80,14 +80,45 @@ class AppDelegate: UIApplicationDelegate { } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]?) -> Bool { - _ = launchOptions?[.url] // $ source=remote + let url = launchOptions?[.url] // $ source=remote + sink(arg: url) // $ tainted return true } func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]?) -> Bool { - _ = launchOptions?[.url] // $ source=remote + let url = launchOptions?[.url] // $ source=remote + sink(arg: url) // $ tainted + + let url2 = launchOptions?[.url] as! String // $ source=remote + sink(arg: url2) // $ tainted + + if let url3 = launchOptions?[.url] as? String { // $ source=remote + sink(arg: url3) // $ tainted + } + + if let options = launchOptions { + let url4 = options[.url] as! String // $ source=remote + sink(arg: url4) // $ tainted + } + + switch launchOptions { + case .some(let options): + let url5 = options[.url] // $ MISSING: source=remote + sink(arg: url5) // $ MISSING: tainted + case .none: + break + } + + processLaunchOptions(options: launchOptions) + return true } + + private func processLaunchOptions(options: [UIApplication.LaunchOptionsKey : Any]?) { + // (called above) + let url = options?[.url] // $ MISSING: source=remote + sink(arg: url) // $ MISSING: tainted + } } class SceneDelegate : UISceneDelegate { diff --git a/swift/swift-autobuilder/swift-autobuilder.cpp b/swift/swift-autobuilder/swift-autobuilder.cpp index c6b2582ed2b..32cd52541a9 100644 --- a/swift/swift-autobuilder/swift-autobuilder.cpp +++ b/swift/swift-autobuilder/swift-autobuilder.cpp @@ -54,6 +54,11 @@ static bool buildSwiftPackages(const std::vector& swiftPa return any_successful; } +static void installDependencies(const CLIArgs& args) { + auto structure = scanProjectStructure(args.workingDir); + installDependencies(structure, args.dryRun); +} + static bool autobuild(const CLIArgs& args) { auto structure = scanProjectStructure(args.workingDir); auto& xcodeTargets = structure.xcodeTargets; @@ -82,7 +87,6 @@ static bool autobuild(const CLIArgs& args) { return false; } else if (!xcodeTargets.empty()) { LOG_INFO("Building Xcode target: {}", xcodeTargets.front()); - installDependencies(structure, args.dryRun); auto buildSucceeded = buildXcodeTarget(xcodeTargets.front(), args.dryRun); // If build failed, try to build Swift packages if (!buildSucceeded && !swiftPackages.empty()) { @@ -113,6 +117,7 @@ static CLIArgs parseCLIArgs(int argc, char** argv) { int main(int argc, char** argv) { auto args = parseCLIArgs(argc, argv); + installDependencies(args); auto success = autobuild(args); codeql::Log::flush(); if (!success) { diff --git a/swift/tools/tracing-config.lua b/swift/tools/tracing-config.lua index 06be53bc33c..b52c5f03a45 100644 --- a/swift/tools/tracing-config.lua +++ b/swift/tools/tracing-config.lua @@ -119,6 +119,8 @@ function RegisterExtractorPack(id) SwiftMatcher, CreatePatternMatcher({ '^lsregister$' }, MatchCompilerName, nil, { trace = false }), + CreatePatternMatcher({ '^codesign$' }, MatchCompilerName, nil, + { trace = false }), CreatePatternMatcher({ '^sandbox%-exec$' }, MatchCompilerName, nil, { trace = false }), }